[SPRING] 유형별로 참조 빈을 Autowire로 나열
SPRING유형별로 참조 빈을 Autowire로 나열
데몬 유형의 객체 목록을 가진 하나의 클래스가 있습니다.
class Xyz {
List<Daemon> daemons;
}
내 봄 구성은 다음과 같습니다.
<bean id="xyz" class="package1.Xyz">
<property name="daemons" ref="daemonsList">
</bean>
<bean id="daemon1" class="package1.DaemonImpl1"/>
<bean id="daemon2" class="package1.DaemonImpl2"/>
<bean id="daemonsList" class="java.util.ArrayList">
<constructor-arg>
<list>
<ref bean="daemon1" />
<ref bean="daemon2" />
</list>
</constructor-arg>
</bean>
이제 목록에 각 데몬 구현을 명시 적으로 연결하는 대신 목록에 Daemon 유형의 모든 bean을 자동으로 autowire 할 수 있습니다. 내가 해결하려고하는 문제 누군가가 Daemon 클래스의 새로운 구현 Bean을 생성하고 그것을 목록에 연결하는 것을 잊어 버린 경우.
어딘가에 stackoverflow 있지만이 다시 찾을 수없는이 질문을 보았다. 그것을위한 사과.
해결법
-
==============================
1.그것은 (XML에서 ArrayList 빈 제거) 이렇게 작동합니다.
그것은 (XML에서 ArrayList 빈 제거) 이렇게 작동합니다.
public Class Xyz { private List<Daemon> daemons; @Autowired public void setDaemons(List<Daemon> daemons){ this.daemons = daemons; } }
XML에서이 작업을 수행 할 방법이 없다고 생각합니다.
만나다: 3.9.2. @Autowired 및 @Inject :
public class MovieRecommender { @Autowired private MovieCatalog[] movieCatalogs; // ... }
public class MovieRecommender { private Set<MovieCatalog> movieCatalogs; @Autowired // or if you don't want a setter, annotate the field public void setMovieCatalogs(Set<MovieCatalog> movieCatalogs) { this.movieCatalogs = movieCatalogs; } // ... }
BTW에서는 Spring 4.x부터 @Ordered 메커니즘을 사용하여 이러한 목록을 자동으로 정렬 할 수 있습니다.
from https://stackoverflow.com/questions/7446301/autowire-reference-beans-into-list-by-type by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @ static 클래스에서의 autowired (0) | 2018.12.19 |
---|---|
[SPRING] 스프링 부트 - jar 파일 만들기 - META-INF / spring.factories에 자동 구성 클래스가 없습니다. (0) | 2018.12.19 |
[SPRING] 봄 부팅시 HTTP POST maxPostSize 증가 (0) | 2018.12.19 |
[SPRING] Tomcat 6에서 Spring 4.0을 배치 할 때의 AbstractMethodError (0) | 2018.12.19 |
[SPRING] Spring 부트에서 Yaml의 목록을 객체 목록으로 매핑 (0) | 2018.12.19 |