2014-09-16 15 views
13

CDI ile çalışırken, @Inject ek açıklamasının hangi arabirimi uygulayacağını seçmek için çağrılacak bir yapımcı yöntemi oluşturmak için @Produces ek açıklamasını kullanabilirdim.CDI @ Produces ek açıklaması için Spring eşdeğeri hangisidir?

Şimdi Spring ile çalışıyorum ama benzer bir şey bulamadım. @Autowired ek açıklamasını kullandığımda aynı sonucu elde etmek için ne kullanmam gerekiyor? CDI'da @Produces ek açıklama?

cevap

13

Sen @Bean aradığınız:

@Bean bir yöntem düzeyinde açıklama ve XML elemanının doğrudan benzeşir. Açıklama, init-method, destroy-method, autowiring, tembel-init, bağımlılık-kontrol, bağlıdır ve kapsamı gibi sunulan özelliklerin çoğunu destekler.

Örnek (yukarıdaki bağlantıya alınan):

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

Bunu bir okuma ödemek öneririz: Spring DI and CDI comparative study

+1

tek bir farkla dikkat - Bir CDI yapımcı InjectionPoint erişimi olan bazı ek hileler yapmasına izin verir. –

+0

Ayrıca, fasulye içine enjekte edilmesi gereken öğeleri geçirip bunları ayarlamak için @Auto kablolu kullanabilirsiniz. –

+0

CDI ile, çekirdek olmayan türlerin veya fasulye olmayan nesnelerin enjekte edilmesi mümkündür. Bu aynı zamanda Bahar ile geçerli mi? Ayrıca, bu hakkı elde ettiğimde, kavramlar farklıdır: CDI, her fasülyenin enjekte edilebilir bir nesne üretmesine izin verirken, Spring'te, @Configuration ile açıklamalı sadece sınıflar Fasulye üretebilir (aksi halde Basit modda). Niyetler farklı ... – Wecherowski

İlgili konular