Jef*_*rod 2 junit unit-testing scope dependency-injection guice
注意:这个问题不是关于Gamma94中描述的Singleton类(确保只有一个对象被实例化).
我阅读了关于@Singleton属性的Guice文档:
Classes annotated @Singleton and @SessionScoped must be threadsafe.
Run Code Online (Sandbox Code Playgroud)
即使我不打算从多个线程访问该对象,是这种情况吗?如果是这样,为什么?
如果只从一个线程访问一个对象,它就不需要是线程安全的,即使它是一个Guice @Singleton
.Guice不会在内部执行任何可能导致非线程安全单例断开的多线程...构建的Injector
过程全部在调用的线程上完成,Guice.createInjector
并且任何动态调配都在调用的线程上完成provider.get()
.当然,单例只会被创建一次,然后每次需要时才返回...当它被创建时,取决于它是否被绑定为一个急切的单例(总是在启动时创建)以及是否Injector
创建Stage.DEVELOPMENT
(仅创建)如果需要的话)或Stage.PRODUCTION
(在启动时创建).
通常情况下,可以同时从多个线程访问单例(特别是在Web应用程序中),因此警告.虽然许多开发人员会理解单例在这种情况下需要线程安全,但其他开发人员可能不会,我认为值得警告它们.
归档时间: |
|
查看次数: |
1678 次 |
最近记录: |