2010-12-02 107 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門票的人員編寫的。