我需要使用 Spring 框架在抽象父类(super class)中注入(inject)依赖项。
class A extends AbstractClassB{
private Xdao daox ;
...
public setXdao() { ... }
}
class AbstractClassB{
..
private yDao daoy;
public seyYdao() { ... }
}
每次实例化抽象类 B 时,我都需要传递父类(super class)依赖项(在我的项目中可以以 100 种方式对其进行子类化)
application.xml 中的条目(spring 上下文文件)
<bean id="aClass" class="com.mypro.A"
<property name="daox" ref="SomeXDaoClassRef" />
<property name="daoy" ref="SomeYDaoClassRef"/>
</bean>
如何在 application.xml 中创建父类(super class) AbstractClassB 的 bean 引用,以便在所有子类 bean 创建中使用它?
最佳答案
您可以创建一个抽象 bean 定义,然后“子类型”该定义,例如
<bean id="b" abstract="true" class="com.mypro.AbstractClassB">
<property name="daox" ref="SomeXDaoClassRef" />
</bean>
<bean id="a" parent="b" class="com.mypro.A">
<property name="daoy" ref="SomeYDaoClassRef" />
</bean>
严格来说,b
的定义甚至不需要你指定类,你可以省略:
<bean id="b" abstract="true">
<property name="daox" ref="SomeXDaoClassRef" />
</bean>
<bean id="a" parent="b" class="com.mypro.A">
<property name="daoy" ref="SomeYDaoClassRef" />
</bean>
但是,为了清楚起见并让您的工具有更好的机会帮助您,通常最好将其保留。
Section 3.7 of the Spring Manual讨论 bean 定义继承。
关于spring - 在抽象父类(super class)中注入(inject)spring依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4238987/