अगर आप भविष्य में कुछ अन्य DI का उपयोग करना चाहते हैं तो @Autowired + @Qualifier केवल स्प्रिंग DI के साथ काम करेगा, अच्छा विकल्प है।
अन्य अंतर जो मुझे बहुत महत्वपूर्ण लगा, वह है @Qualifier डायनामिक बीन वायरिंग का समर्थन नहीं करता है, क्योंकि @Qualifier प्लेसहोल्डर का समर्थन नहीं करता है, जबकि @Resource इसे बहुत अच्छी तरह से करता है।
उदाहरण के लिए: यदि आपके पास इस तरह कई कार्यान्वयन के साथ एक इंटरफ़ेस है
interface parent {
}
@Service("actualService")
class ActualService implements parent{
}
@Service("stubbedService")
class SubbedService implements parent{
}
@Autowired & @Qualifier के साथ आपको विशिष्ट बाल कार्यान्वयन सेट करना होगा
@Autowired
@Qualifier("actualService") or
@Qualifier("stubbedService")
Parent object;
जो प्लेसहोल्डर को प्रदान नहीं करता है, जबकि @Resource के साथ आप विशिष्ट चाइल्ड कार्यान्वयन को इंजेक्ट करने के लिए प्लेसहोल्डर और संपत्ति फ़ाइल का उपयोग कर सकते हैं
@Resource(name="${service.name}")
Parent object;
जहाँ service.name प्रॉपर्टी फ़ाइल के रूप में सेट है
#service.name=actualService
service.name=stubbedService
आशा है कि किसी की मदद करता है :)