개발공부/Spring

[Spring] Collection 타입을 생성자 방식으로 주입하기

klyhyeon 2022. 1. 5. 22:15
728x90

클래스 인스턴스가 초기화 될 때, A 인터페이스를 구현하는 Bean들을 List<E implements A>로 받고 싶다면 아래와 같은 코드를 사용하시면 됩니다.


public class CollectionInject {
    //생성자 주입 방식에서 생성자를 의존주입 생성자 하나만 사용한다면 @Autowired가 생략가능 합니다. 그렇지 않고 다른 새성자도 사용할거라면 @Autowired로 명시해줘야 Spring이 어떤 생성자가 의존주입 생성자를 인지합니다.
    @Autowired
    //Spring은 InterfaceA를 구현한 Bean들을 모두 listOfImplementationA 리스트에 add 해줍니다.
    public CollectionInject(List<InterfaceA> listOfImplementationA) {
        for (InterfaceA interfaceA : listOfImplementationA) {
            System.out.println(interfaceA.getName());
        }
    }
}

참고자료