У меня есть классКак вводить только одно свойство в классе
class A{
private Foo foo;
private Bar bar;
private Baz baz;
}
Теперь этот класс имеет конструктор, который инициализирует Foo и бар. Baz
однако имеет поле DataSource
, которое я хочу, чтобы впрыскивалось пружиной. Конструктор классов A
инициализирует все, кроме NOT baz
. Теперь класс A
инициализирован new
.
A a = new A(Foo, Bar)
В классе A
установлен сеттер. Bean
<bean id="ABean" class="com.acme.A" >
<property name="baz">
<bean class="com.acme.baz">
<property name="dataSource" ref="mysqlDataSource"> </property>
</bean>
</property>
</bean>
, но я получаю:
nested exception is java.lang.NoSuchMethodException: com.acme.A.<init>()
1. Как вводить только одно свойство каждого бина, а остальное инициализируется конструктором?
2. Каким другим способом это можно решить?
вот аналогичный вопрос, на который вы можете обратить внимание; [Http://stackoverflow.com/questions/18069756/is-default-constructor-required-in-spring-injection/18070366][1] [1]: http://stackoverflow.com/ Вопросы/18069756/is-default-constructor-required-in-spring-injection/18070366 –
Весенний контейнер не управляет вручную созданным (с «новым» оператором) бобами. Если вы хотите ввести свойство в A, вы должны объявить его как bean-компонент и получить из весеннего контекста. Возможно, попробуйте использовать метод post-construct для инициализации Foo и Bar http://stackoverflow.com/questions/1088550/spring-how-to-call-a-method-after-bean-initialization-is-complete It не изящное решение, но кажется, что невозможно передать не-весенние бобы в качестве параметров. – yname