2012-12-15 89 views
2

有谁知道用PostConstruct注释的方法中实例字段的初始化是否被认为是线程安全的?我不太确定,如果我必须使我的ApplicationScoped bean的字段变得不稳定或不是,所以其他线程可以真正看到这些值...CDI postconstruct初始化字段

感谢您的任何提示或答案!

回答

1

我没有直接引用规范,绝对保证这一点,但@PostConstruct应该是线程安全的。

CDI运行时完全负责创建bean,并且只会为给定范围创建一个实例。 @PostConstruct在这个范围内或通过注入访问bean之前运行。

+0

谢谢你,如果你能肯定地告诉我,会更好,因为从JMM的角度来看,我认为如果没有记忆障碍,我必须让它们变得不稳定。 –

+0

你会想,但是在CDI初始化bean之前,其他线程可能甚至不会获得对实例的引用。在并发请求一个bean的情况下,我敢肯定所有的线程都停留在假设的'beanManager.getBean(...)'调用上。 –

+0

谢谢,这当然是唯一有意义的行为,但我很想知道它,而不必阅读规范。 ;) –