स्प्रिंग, javax.annotation.Resource
और javax.inject.Named
में नाम से निर्भरता इंजेक्शन करने के लिए दो अलग-अलग टिप्पणियां हैं। documentation at Spring इंगित करता है @Resource
नाम से इंजेक्शन के लिए इस्तेमाल किया जाना चाहिए:वसंत निर्भरता इंजेक्शन, @ नामांकित या @ संसाधन का उपयोग करने के लिए?
आप नाम से एनोटेशन चालित इंजेक्शन व्यक्त करने के लिए करना चाहते हैं, मुख्य रूप से @Autowired का उपयोग नहीं करते हैं, भले ही एक सेम नाम के चर्चा करते हुए की तकनीकी रूप से सक्षम है @Qualifier मूल्यों के माध्यम से। इसके बजाय, JSR-250 @ संसाधन एनोटेशन का उपयोग करें, जिसे विशिष्ट लक्ष्य घटक को अपने अद्वितीय नाम से पहचानने के लिए अर्थात् परिभाषित किया गया है, घोषित प्रकार मिलान प्रक्रिया के लिए अप्रासंगिक है। के रूप में वसंत केवल
@Autowired
@Qualifer
के साथ संयुक्त के बजाय@Resource
की वकालत कर रहा है
ऊपर, थोड़ा भ्रामक है। later in the documentation तक @Named
का कोई उल्लेख नहीं है।
जेएसआर -50 @Resource
परिभाषित करता है, जबकि जेएसआर-330 @Inject
और @Named
परिभाषित करता है। मुझे पता है कि वे आसानी से वसंत के भीतर मिश्रित और मिलान कर सकते हैं। किस जेएसआर का उपयोग करना है?
ऐसा लगता है जैसे गुइस और सीडीआई के साथ पोर्टेबिलिटी अच्छा होगा, और इसलिए जेएसआर-330 एनोटेशन का उपयोग करने के लिए। दूसरी ओर, दस्तावेज जेएसआर-330 एनोटेशन का उपयोग करते समय वसंत के भीतर limitations पर भी इंगित करता है।
एनोटेशन इंजेक्शन-बाय-नाम के लिए सबसे अच्छा अभ्यास (यदि कोई है तो) क्या है?
धन्यवाद।
उल्लिखित सीमाएं केवल संदर्भ देती हैं कि स्प्रिंग उन एनोटेशन का उपयोग कैसे करेगी, और स्प्रिंग के साथ काम करने के लिए स्प्रिंग के बारे में बताए गए एनोटेशन कितने मजबूत हैं। –
सीमाएं सभी कठिन लगती नहीं हैं। हालांकि वे मौजूद हैं। ऐसा लगता है कि वसंत ने अतिरिक्त सीडीआई एनोटेशन को भी अपनाया था, तो यह बहुत आसान होगा। – Saish