복붙노트

[SPRING] Spring에서 주어진 타입의 모든 의존성을 autowire하는 방법이 있습니까?

SPRING

Spring에서 주어진 타입의 모든 의존성을 autowire하는 방법이 있습니까?

주어진 클래스에 대해 주석 기반 배선 (즉, @Configurable (autowire = Autowire.BY_TYPE))을 사용하고 있으며 주어진 유형의 모든 빈을 목록으로 연결하고 싶습니다.

응용 프로그램 컨텍스트 :

<beans>
    <bean class="com.my.class.FirstConfigurer"/>
    <bean class="com.my.class.SecondConfigurer"/>
</beans>

autowire 할 클래스 :

@Configurable(autowire=Autowire.BY_TYPE) public class Target {
    ...
    public void setConfigurers(List<Configurer> configurers) { ... }
}

모든 종속성은 Configurer라는 공통 인터페이스를 구현합니다.

이 작업을 통해 컬렉션의 모든 종속성을 컬렉션에 묶고 필요한 곳에 삽입하거나 XML 또는 기타 를 정의해야합니까?

해결법

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

    1.예,

    예,

    @Inject
    private List<Configurer> configurers;
    

    작동하고 인터페이스를 구현하는 모든 bean 목록을 얻습니다. (여러 변형 - @Inject 또는 @Autowired, 필드, 설정자 또는 생성자 주입 - 모든 작업)

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

    2.이것은 작동해야합니다 :

    이것은 작동해야합니다 :

    @Configurable(autowire=Autowire.BY_TYPE) 
    public class Target {
    
        @Autowired
        public void setConfigurers(List<Configurer> configurers) { ... }
    
    }
    

    이것은 Spring 매뉴얼의 3.9.2 절에 설명되어있다.

  3. from https://stackoverflow.com/questions/7083308/is-there-a-way-in-spring-to-autowire-all-dependencies-of-a-given-type by cc-by-sa and MIT license