2010-12-02 72 views

回答

2

您可以通过field/setter注入来注入它们。 (请注意,构造函数注入在春季不受欢迎,但支持)

+0

为什么在构造函数注入中使用setter注入会更好?我认为它们是相同的。 – 2010-12-02 17:27:28

0

总之,没有。 Spring确实支持所谓的“方法注入”,但它与你所想的不同。 Spring也支持构造函数注入,但是你不会自己调用构造函数,Spring就是自己调用构造函数。

相反,你可以使用反射来实例化自己的类,并通过任意参数:

Class<MyObject> clazz = MyObject.class; // this can be looked up or stored in a field, etc. 
MyObject myObject = clazz.getConstructor(String.class, int.class) 
         .newInstance("arbitrary parameter", 42); 
1

它看起来像在春天4.1.0.RC2最后加入这一重要功能。我测试了它,它似乎工作。

它加入作为JIRA票SPR-7431 ("Passing lookup-method arguments to created bean constructor")的一部分:

<查找法/>应允许指定任意数量的参数。这些参数应该直接传递给新创建的bean的构造函数。

有关如何添加该功能的更多信息,this blog post是由打开JIRA门票的人员编写的。