我正在开发Spring MVC应用程序,我需要为某种实用程序实现单例模式,例如:imageuploader等。
我的问题是:以什么方式为这些实用程序实现单例,为这些类初始化bean 并注入我需要的控制器,服务,DAO?或者使用 static单例的字段实现,以保持此类的实例?
答案 0 :(得分:2)
使用Spring bean可以轻松地在单元测试中注入模拟。但是,您只能从其他Spring bean(或Spring bean创建的对象中访问它)访问它。
另请参阅此问题中的讨论:Difference between static class and singleton pattern?
传统上,您使用PropertyPlaceholderConfigurer将属性文件中的配置注入Spring网络应用程序。 This blog讨论了使用Spring实现此目的的各种新方法。
答案 1 :(得分:2)
首先,尽量避免单身,因为它被认为是bad practice。与非单例实例相比,它们与其他实例的交互也很难测试和验证。
如果你绝对需要它,我建议你使用Spring bean,这样你就可以利用自动装配机制和Spring的bean生命周期。
有关详细信息,请参阅Spring参考文档的Beans部分。