spring - 在抽象父类(super class)中注入(inject)spring依赖

标签 spring dependency-injection

我需要使用 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/

相关文章:

spring - 应用程序上下文加载两次

java - 如何使用 Spring RestTemplate 使用 Page<Entity> 响应

android - 如何使用 Dagger2 将 Activity 范围内的依赖项替换为模拟

delphi - Delphi 是否有基于属性注入(inject)的依赖注入(inject)框架?

java - 具有接口(interface)类型和 InjectionResolver 的 HK2 Factory

java - 使用不同的 jackson ObjectMapper 进行单独的 RequestMapping

spring - 在 Apache Tiles 上找不到属性

java - Spring WebSocket - Controller 发送消息后丢失

c# - 配置 HttpClient 以使用服务来填充身份验证 header ?

java - Spring - 延迟注入(inject)