3

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

ClassName newBean = new ClassName();

我只使用弹簧来创建单例。

4

3 回答 3

5

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

如果只是简单地调用类的构造函数,它就不再是 Spring 管理的 bean,而且 Spring 对 bean 所做的一切都不是对手动构建的对象进行的。

于 2012-05-23T10:15:20.150 回答
2

我知道的一种情况是spring用作struts2的ObjectFactory。为每个 http 请求创建一个新的 Action 对象。

于 2012-05-23T10:15:23.297 回答
0

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

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

这不需要任何代码更改。

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

于 2012-05-23T10:19:20.807 回答