2014-09-16 6 views
13

जब मैं सीडीआई के साथ काम कर रहा था, तो मैं एनोटेशन का उपयोग करने के लिए एक निर्माता विधि बनाने के लिए कह सकता था ताकि यह चुनने के लिए कि कौन सा बीन @Inject एनोटेशन द्वारा इंजेक्शन दिया जाएगा।सीडीआई @ प्रोडक्शन एनोटेशन के लिए वसंत समकक्ष कौन सा है?

अब मैं वसंत के साथ काम कर रहा हूं, लेकिन मुझे कुछ भी समान नहीं मिला। @Autowired एनोटेशन का उपयोग करते समय मुझे सीडीआई में @Produces एनोटेशन के साथ एक ही परिणाम प्राप्त करने के लिए उपयोग करने की आवश्यकता है?

उत्तर

13

आप @Bean लिए देख रहे हैं:

@Bean एक विधि स्तरीय एनोटेशन और XML तत्व का एक सीधा अनुरूप है। एनोटेशन द्वारा प्रदान की जाने वाली अधिकांश विशेषताओं का समर्थन करता है, जैसे: इनिट-विधि, नष्ट-विधि, ऑटोवॉयरिंग, आलसी-इनिट, निर्भरता-जांच, निर्भरता और दायरा।

उदाहरण (ऊपर के लिंक से लिया गया):

@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 का भी उपयोग कर सकते हैं जिन्हें बीन में इंजेक्शन देने और उन्हें सेट करने की आवश्यकता होती है। –

+0

सीडीआई के साथ आदिम प्रकार या वस्तुओं को इंजेक्ट करना संभव है जो स्वयं सेम नहीं हैं। क्या यह वसंत के साथ भी मान्य है? इसके अलावा जब मुझे यह अधिकार मिला, तो अवधारणाएं अलग होती हैं: जबकि सीडीआई प्रत्येक बीन को इंजेक्शन योग्य वस्तु उत्पन्न करने की अनुमति देता है, वसंत में केवल @ कॉन्फ़िगरेशन के साथ एनोटेटेड कक्षाएं बीन्स (अन्यथा लाइट मोड में) उत्पन्न कर सकती हैं। इरादे अलग हैं ... – Wecherowski

संबंधित मुद्दे