我知道有几次问了类似的问题,但我仍然找不到唯一真实的答案。
public class SimpleMovieLister {
private MovieFinder movieFinder;
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
//getter
}
为什么我们不让movieFinder变得不稳定? Spring的上下文是否有一些很好的魔力来建立SimpleMovieLister的安全发布? 或者某些线程可以在movieFinder方法调用上获得NPE?
实际上这answer澄清了我正在谈论的问题,但它没有说明Spring有能力阻止这个问题。所以我想知道是否有100%正确答案。
答案 0 :(得分:1)
Spring确保在容器初始化完成后,可以从任何线程安全地访问您急切初始化的单例。
如果您有一个原型bean,由一个线程按需创建,然后发布到其他线程,那么您就自己的线程安全性而言。