【发布时间】:2019-04-19 08:39:47
【问题描述】:
喜欢主题。我没有看到这些方法之间有任何区别。 当我只使用这些时,原型 bean 很清楚。但是在春季,我们基于单例的 bean,所以当我在单例 bean 中使用具有范围原型的 bean 时,它看起来就像我想创建新对象一样。
@Service
public class SomeService{
@Autowired
private ApplicationContext applicationContext;
public void someClass() {
PrototypeObject prototypeObject = applicationContext.getBean(PrototypeObject .class);
PrototypeObject prototypeObject = new PrototypeObject();
}
}
这两种方法有区别吗?
对我来说最好的答案是: 我失去了 IoC 的所有优势。
【问题讨论】:
-
不同之处在于,当您手动创建一个对象时,您将失去其上的所有 IoC 功能(即必须手动注入依赖项、配置值、调用侦听器、执行事务标记等 - 容器自动执行的所有操作豆类)