我有一个具有getInstance()
方法的单例实用程序助手类,它懒惰地初始化并返回实例。我总是使用getInstance()
来获取实例。我只是将它作为Spring组件,因为我需要访问我的实用程序类中的一些其他spring bean。
同时,默认情况下,此类是spring bean范围的单例。
我应该只实现simple lazy initialization还是应该在多线程应用程序中使用双重检查锁定?
或者Spring bean singleton会在应用程序的整个生命周期中保证这个单个实例吗?
答案 0 :(得分:0)
或者Spring bean singleton会在应用程序的整个生命周期中保证这个单个实例吗?
Spring将bean加载到一个线程中,因此只要在弹簧布线期间访问spring bean而不是以后访问,就不必担心双重检查锁定。在其他工作中,如果您的帮助器类作为Spring property
传递给另一个bean,那么将在单线程上下文中调用getInstance()
。
但是,如果您将 factory 注入另一个类,并且之后有可能在之后调用{{1>}方法,那么接线完成你应该担心保护它免受多线程初始化的影响。