5

के बीच क्या अंतर है, मैं बस सोच रहा हूं कि @Inject & @Autowired के बीच क्या अंतर है?, या वे एक ही काम कर रहे हैं?@ इंजेक्शन और @Autowired

और अगर मैं एक वसंत सेम जो एक गुंजाइश होनी है:

@Service 
@Scope("singleton") 

मैं कोई समस्या नहीं के साथ दोनों के साथ इसके लिए निर्भरता इंजेक्शन कर सकते हैं?

अग्रिम धन्यवाद।

उत्तर

7

जो मुझे पता है, वे वही करते हैं। @Inject javax.inject से एक एनोटेशन है, जो केवल निर्भरता इंजेक्शन के लिए एपीआई है। वसंत में आप दोनों का उपयोग कर सकते हैं, जैसा कि मुझे लगता है कि स्प्रिंग @ इंजेक्ट के लिए एक कार्यान्वयन प्रदान करता है जो स्प्रिंग वातावरण में @Autowired जैसा ही काम करता है।

मथायस Wessendorf यहां इस बारे में भी ब्लॉग: http://matthiaswessendorf.wordpress.com/2010/04/20/spring-3-0-and-jsr-330-part-2/

6

कैसे के बारे में the documentation पढ़ने?

JSR 330 के @Inject एनोटेशन नीचे के उदाहरणों में @Autowired वसंत के के स्थान पर इस्तेमाल किया जा सकता। @ इंजेक्ट में की आवश्यकता नहीं है, जो वसंत की @Autowired एनोटेशन के विपरीत है, जिसमें संपत्ति आवश्यक है, यह इंगित करने के लिए कि क्या इंजेक्शन दिया जा रहा है वैकल्पिक है। यह व्यवहार स्वचालित रूप से सक्षम है यदि आपके पास क्लासपाथ पर JSR 330 JAR है।

2

मुझे लगता है कि उनका कहना है कि, अगर आप @Autowired उपयोग करते हैं, आप स्प्रिंग, जहां @Inject के प्रयोग पर निर्भरता पैदा कर रहे लायक है, तो आप एक और निर्भरता इंजेक्शन रूपरेखा है कि JSR 330 का समर्थन करता है बाहर स्वैप करने के लिए सक्षम हो जाएगा।

+0

अधिक स्पष्टीकरण कृपया? –

+0

आपको और स्पष्टीकरण की आवश्यकता कहां है? एक वसंत आवेदन में @ इंजेक्ट का उपयोग करने के बारे में –

+0

, और यदि यह कोई समस्या या बुरी आदत है? –

0

1) @ इंजेक्ट - javax.inject पैकेज और जावा के हिस्से में परिभाषित।

2) @Autowired - पैकेज org.springframework.bean.factory और स्प्रिंग ढांचे का हिस्सा पैकेज में परिभाषित किया गया है।

0

पहले, @Autowired स्प्रिंग फ्रेमवर्क द्वारा परिभाषित किया गया है लेकिन @Inject "जावा के लिए निर्भरता इंजेक्शन" से आया है (JSR-330) "

दूसरा, @Inject इसलिए यदि आवश्यक नहीं ले करता है विशेषता यह किसी भी सेम खोजने में विफल रहा है, यह एक त्रुटि के साथ विफल हो जाएगा लेकिन @Autowired के साथ आवश्यक = false आ सकते हैं और एक नल क्षेत्र की अनुमति देगा।

तीसरा, @Inject एनोटेशन का लाभ के बजाय एक संदर्भ सीधे इंजेक्षन कि है , आप प्रदाता को इंजेक्ट करने के लिए @ इंजेक्ट से पूछ सकते हैं। प्रदाता इंटरफ़ेस अन्य चीजों के अलावा, बीन संदर्भों के आलसी इंजेक्शन और बीन के कई उदाहरणों के इंजेक्शन को सक्षम बनाता है।

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