【问题标题】:Which is better to implement a singleton in a Spring application: a bean or a static field?在 Spring 应用程序中实现单例哪个更好:bean 或静态字段?
【发布时间】:2016-01-26 22:52:32
【问题描述】:

我正在开发 Spring MVC 应用程序,我需要为某些实用程序实现单例模式,例如:imageuploader 等。

我的问题是:以什么方式为这个实用程序实现单例,为这些类初始化 bean 并注入我需要的地方,如控制器、服务、DAO?或使用 static单例的字段实现以保留此类的实例?

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    首先,尽量避免单例,因为它被认为是bad practice。此外,与非单例实例相比,它们与其他实例的交互也难以测试和验证。

    如果你绝对需要它,我建议你使用 Spring bean,这样你就可以利用自动装配机制和 Spring 的 bean 生命周期。

    有关详细信息,请参阅 Spring 参考文档的 Beans 部分。

    【讨论】:

      【解决方案2】:

      使用 Spring bean as 可以让您轻松地在单元测试中注入模拟。但是,您将只能从其他 Spring bean(或由 Spring bean 创建的传递对它的引用的对象)访问它。

      另请参阅此问题中的讨论:Difference between static class and singleton pattern?

      传统上,您会使用PropertyPlaceholderConfigurer 将配置文件从属性文件注入到 Spring Web 应用程序中。 This blog 讨论了使用 Spring 执行此操作的各种新方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-23
        • 2014-04-25
        • 2012-04-15
        相关资源
        最近更新 更多