Как внедрить только одно свойство в класс

У меня есть класс

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() и не создавать объект самостоятельно. Пусть весна построит это для вас.

Другие вопросы по тегам