복붙노트

[SPRING] 추상 수퍼 클래스에서 스프링 의존성 주입

SPRING

추상 수퍼 클래스에서 스프링 의존성 주입

스프링 프레임 워크를 사용하여 추상 수퍼 클래스에 의존성을 주입해야한다는 요구 사항이 있습니다.

class A extends AbstractClassB{ 
    private Xdao daox ;
    ...
    public setXdao() { ... }
}

class AbstractClassB{
    ..
    private yDao  daoy;
    public seyYdao() { ... }
}

나는 언제나 수퍼 클래스 의존성을 전달할 필요가있다. 나는 abstract 클래스 B를 인스턴스화한다 (이것은 내 프로젝트에서 100 가지 방법으로 서브 클래 싱 될 수있다)

application.xml의 항목 (스프링 컨텍스트 파일)

<bean id="aClass" class="com.mypro.A" 
    <property name="daox" ref="SomeXDaoClassRef" /> 
    <property name="daoy" ref="SomeYDaoClassRef"/>
</bean>

어떻게하면 모든 하위 클래스 bean 작성에서 사용할 수 있도록 application.xml에 수퍼 클래스 AbstractClassB의 bean 참조를 작성할 수 있습니까?

해결법

  1. ==============================

    1.당신은 추상적 인 bean 정의를 생성 한 다음 그 정의를 "subtype"할 수 있습니다.

    당신은 추상적 인 bean 정의를 생성 한 다음 그 정의를 "subtype"할 수 있습니다.

    <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>
    

    그러나 명확성을 위해 도구를 제공하는 것이 더 나을 수있는 기회가되므로 자주 맡기는 것이 가장 좋습니다.

    Spring Manual의 3.7 절에서는 Bean 정의 상속에 대해 설명한다.

  2. ==============================

    2.Spring 추상 플래그를 사용하여 클래스에 추상 클래스임을 알릴 수 있습니다. 그런 다음 모든 구체 구현은이 빈을 상위 빈으로 표시 할 수 있습니다.

    Spring 추상 플래그를 사용하여 클래스에 추상 클래스임을 알릴 수 있습니다. 그런 다음 모든 구체 구현은이 빈을 상위 빈으로 표시 할 수 있습니다.

    <bean id="abstractClassB" class="AbstractClassB" abstract="true">
      <property name="yDao" ref="yDao" />
    </bean>
    
    <bean id="classA" class="A" parent="abstractClassB">
      <property name="xDao" ref="xDao" />
    </bean>
    
  3. ==============================

    3.추상 부모 bean을 가짐 :

    추상 부모 bean을 가짐 :

    http://forum.springsource.org/showthread.php?t=55811

  4. from https://stackoverflow.com/questions/4238987/inject-spring-dependency-in-abstract-super-class by cc-by-sa and MIT license