接受参数的构造函数 - 定义为普通对象或spring bean?

Lud*_*son 7 spring

假设我有一个带有一个带有一个或多个参数的构造函数的类.我们还要说这些参数应该是来自用户的一些输入.也就是说,只有在运行时才能在编译时或配置时知道参数.我应该将我的类定义为原型spring bean,还是应该用"new"创建它.

如果我应该将它定义为bean,我该如何传入参数?

Tom*_*icz 7

这在Spring中存在问题.如果您的类没有依赖于其他bean,只需使用它创建它new.如果你有一个类依赖于其他Spring bean但你想要传递一些运行时参数,那么Spring目前不支持它.

但是请看一下SPR-7431我关于传递自定义参数的文章<lookup-methods/>.如果一切顺利,此功能应该是Spring 3.2的一部分,它应该符合您的要求.它基本上允许创建prototype-scoped bean,同时仍然传递一些构造函数参数.


ska*_*man 5

除非你的类也依赖于你的上下文中的其他bean,否则你不应该把它变成bean - 没有意义.只是用new.

使它成为bean的唯一令人信服的理由是它是否依赖于其他bean,在这种情况下,原型范围的bean是合理的.但是,如果类在其构造函数中需要这些运行时值,那么您无法真正做到这一点,不能更改类以通过某种方法而不是使用构造函数来注入它们.