Как внедрить только одно свойство в класс
У меня есть класс
class A{
private Foo foo;
private Bar bar;
private Baz baz;
}
Теперь у этого класса есть конструктор, который инициализирует foo и bar. Baz
Однако имеет DataSource
поле, в которое я хочу впрыснуть весну. A
конструктор класса инициализирует все, но НЕ baz
, Теперь A
класс инициализируется с new
,
A a = new A(Foo, Bar)
A
У класса есть сеттер. боб
<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. Как внедрить только одно свойство для bean-компонента, в то время как остальное инициализируется конструктором?
2. Каким другим способом это можно решить?
1 ответ
Для аргументов конструктора используйте тег xml constructor-arg, а для параметров, которые задаются с помощью установщиков, - тег свойства xml.
Для этого вам нужно определить метод setBaz().
Тогда вы должны использовать getBean() и не создавать объект самостоятельно. Пусть весна построит это для вас.