我有一个班级
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
类有setter。
豆
<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。还有什么方法可以解决这个问题?
答案 0 :(得分:1)
对于构造函数的参数,使用constructor-arg
xml标记,对于使用setter设置的参数,请使用property
xml标记。
为此,您需要定义setBaz()
方法。
然后你应该使用getBean()
而不是自己构造对象。让春天为你构建它。