【发布时间】:2013-08-11 11:38:02
【问题描述】:
我有课
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。还有什么办法可以解决这个问题?
【问题讨论】:
-
这里有一个类似的问题,您可能想看看; [stackoverflow.com/questions/18069756/…[1]:stackoverflow.com/questions/18069756/…
-
Spring 容器不管理手动创建的(使用“new”运算符)bean。如果要向 A 注入属性,则必须将其声明为 bean 并从 spring 上下文中获取。也许尝试使用“post-construct”方法来初始化 Foo 和 Bar stackoverflow.com/questions/1088550/… 这不是优雅的解决方案,但似乎不可能将非 Spring bean 作为参数传递。
标签: java spring property-injection