据我所知,如果为bean提供了scope =“prototype”,则会在每个请求上创建该类的新实例。那么为什么有人会用spring来创建一个新对象而不是简单地写
ClassName newBean = new ClassName();
我只用春天来创造单身人士。
答案 0 :(得分:5)
因为您可能希望在原型中注入其他bean。或者您可能希望将AOP方面应用于此bean的方法。或者你可能想让它成为事务性的。或者安全。
如果你只是调用类的构造函数,它就不再是Spring管理的bean了,Spring不会对bean进行任何操作。
答案 1 :(得分:2)
我知道的一个案例是当spring用作struts2的ObjectFactory时。为每个http请求创建一个新的Action对象。
答案 2 :(得分:0)
CMOE =“关闭修改,打开扩展。”
如果ClassName有任何行为更改,那么您可以扩展ClassName并在config中提供新类的对象。
这不需要任何代码更改。
这是一个很简单的原因。 JB Nizet所说的更具描述性和深入性。