2014-02-15 3 views
0

스프링 주입과 관련된 질문이 있습니다.스프링을 사용하는 제네릭 타입을 기반으로 한 클래스 객체 삽입

클래스가 generic 형식 매개 변수로 정의되어 있습니다. 나는 타입 T (나는 T.class를 의미 함)의 클래스 객체를 주입하는 것이 가능한지 알고 싶다. 이처럼

:

@Component 
public class MyExecutor<T> { 
    @Autowired 
    public MyExecutor(<Inject class object of T>) { 
     .... 
    } 
} 

당신에게 대단히 감사합니다.

답변

1

그 구체적인 예는 효과가 없지만 generics를 사용하여 bean을 작성하고 다른 bean에 bean을 주입 할 때 유형을 유지하는 또 다른 방법이 있습니다.

스프링 4는 Java 구성에서 제네릭에 대한 지원을 확장했습니다.

@Configuration 
public class Config { 

    @Bean("beanA") 
    public MyExecutor<A> beanA() { 
     return new MyExecutor<A>(A.class); 
    } 

    @Bean("beanB") 
    public MyExecutor<B> beanB() { 
     return new MyExecutor<B>(B.class); 
    } 
} 

이어서 beanA 또는 beanB 형으로 주입 될 수있다 :

는 사용 된 일반 파라미터 만 다른 두 개의 빈을 정의하고, 다른 빈에서 유형별들을 주입하는 것이 가능하고,이 JIRA 참조
@Component 
public class OtherClass { 

    @Autowired 
    private MyExecutor<A> beanA; 

} 
관련 문제