2010-12-02 2 views

ответ

2

Вы можете вводить их посредством инъекции поля/установки. (Обратите внимание, что инжектор конструктора нахмурился пружиной, хотя он поддерживается)

+0

Почему существует предпочтение инъекции установщика над инъекцией конструктора? Я думал, что они эквивалентны. – 2010-12-02 17:27:28

0

Короче говоря, нет. Весна поддерживает нечто, называемое «инъекцией метода», но оно отличается от того, что вы думаете. 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

Похоже, эта жизненно важная особенность была наконец-то добавили в Spring 4.1.0.RC2. Я тестировал его, и он работает.

Он был добавлен в качестве части JIRA билета SPR-7431 ("Passing lookup-method arguments to created bean constructor"):

< поиск-метод /> должен позволять указать любое количество параметров. Эти параметры должны передаваться непосредственно конструктору только что созданного компонента.

Для получения дополнительной информации о том, как была добавлена ​​функция, this blog post был написан парнем, открывшим билет JIRA.