본문 바로가기

SpringFramework Core - I. IoC 컨테이너/9. 어노테이션 기반의 컨테이너 설정

9.5. Autowiring 수식자들로써 지네릭 사용하기

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-generics-as-qualifiers

 

 

@Qualifier 어노테이션과 더불어, 자격을 암시하는 형식인 자바 지네릭 타입들을 사용할 수 있다. 그 예시로, 다음과 같은 설정이 있다고 가정해보자.

@Configuration
public class MyConfiguration {

    @Bean
    public StringStore stringStore() {
        return new StringStore();
    }
    
    @Bean
    public IntegerStore integerStore() {
        return new IntegerStore();
    }
}

위 bean들이 지네릭 인터페이스를 구현한다면(Store<String>과 Store<Integer>), 여러분은 Store 인터페이스에 @Autowire를 붙일 수 있으며, 이때 지네릭은 수식자로써 사용된다. 다음 예시를 보자.

@Autowired
private Store<String> s1;    // <String> 수식자, stringStore bean을 주입한다.

@Autowired
private Store<Integer> s2;   // <Integer> 수식자, integerStore bean을 주입한다.

지네릭 수식자들은 리스트, 맵, 배열에도 적용된다. 다음 예시는 지네릭 List를 autowire하고 있다.

// <Integer> 지네릭을 가진 모든 Store bean들을 주입한다.
// Store<String> bean들은 이 리스트에 담기지 않는다.
@Autowired
private List<Store<Integer>> s;