春天范围=“原型”的目的是什么?

时间:2012-05-23 10:11:57

标签: java spring

据我所知,如果为bean提供了scope =“prototype”,则会在每个请求上创建该类的新实例。那么为什么有人会用spring来创建一个新对象而不是简单地写

ClassName newBean = new ClassName();

我只用春天来创造单身人士。

3 个答案:

答案 0 :(得分:5)

因为您可能希望在原型中注入其他bean。或者您可能希望将AOP方面应用于此bean的方法。或者你可能想让它成为事务性的。或者安全。

如果你只是调用类的构造函数,它就不再是Spring管理的bean了,Spring不会对bean进行任何操作。

答案 1 :(得分:2)

我知道的一个案例是当spring用作struts2的ObjectFactory时。为每个http请求创建一个新的Action对象。

答案 2 :(得分:0)

CMOE =“关闭修改,打开扩展。”

如果ClassName有任何行为更改,那么您可以扩展ClassName并在config中提供新类的对象。

这不需要任何代码更改。

这是一个很简单的原因。 JB Nizet所说的更具描述性和深入性。