2014-09-16 3 views
13

CDI에서 작업 할 때 @Produces 주석을 사용하여 @Inject 주석에 의해 삽입되는 인터페이스를 구현 한 bean을 선택하도록 호출되는 생산자 메소드를 생성 할 수있었습니다.CDI @Produces 주석에 해당하는 스프링은 무엇입니까?

이제 스프링과 협력하고 있지만 비슷한 것을 찾지 못했습니다. @Autowired 주석을 사용할 때 CDI의 @Produces 주석과 동일한 결과를 얻으려면 무엇을 사용해야합니까?

답변

13

당신은 @Bean 찾고 :

@Bean은 메소드 레벨의 주석과 XML 요소의 직접적인 아날로그입니다. 주석은 init-method, destroy-method, autowiring, lazy-init, dependency-check, depends-on 및 scope와 같은 대부분의 속성을 지원합니다.

예 (위의 링크에서 촬영) :

@Configuration 
public class AppConfig { 
    //similar to @Produces CDI annotation 
    @Bean 
    public TransferService transferService() { 
     return new TransferServiceImpl(); 
    } 
} 

난 당신이 여기에 읽기를 지불하는 것이 좋습니다 : Spring DI and CDI comparative study

+1

하나 개의 큰 차이주의 - CDI 프로듀서는 InjectionPoint에 액세스 할 수있는 추가 트릭을 수행 할 수 있습니다. –

+0

@Autowired를 사용하여 bean에 삽입해야 할 요소를 전달하고 설정할 수 있습니다. –

+0

CDI를 사용하면 원시 유형이나 bean 자체가 아닌 객체를 주입 할 수 있습니다. Spring에서도 유효합니까? 또한이 권리를 얻었을 때 개념은 다르다 : CDI는 모든 bean이 injectionable 객체를 생성하는 것을 허용하지만, Spring에서는 @Configuration으로 주석 된 클래스 만 Beans를 생성 할 수있다 (그렇지 않으면 라이트 모드에서). 의도는 다릅니다 ... – Wecherowski