यह समझाना मुश्किल है कि मैं वास्तव में क्या चाहता हूं। मेरे पास एक इंटरफ़ेस है जिसमें एक विधि getRuntimeInfo()
है जो मुझे कक्षा के चर के लिए सभी रनटाइम डीबग जानकारी प्रदान करती है। मैं इस इंटरफ़ेस को लागू करने वाले सभी वर्गों की सूची देखना चाहता हूं। मैं जावा और स्प्रिंग का उपयोग कर रहा हूँ। एक तरीका मैं यह कर सकता हूं कि वसंत संदर्भ से सभी सेम प्राप्त करें और instanceof
ऑपरेटर का उपयोग करके जांचें। लेकिन मैं स्पष्ट प्रदर्शन प्रभावों के लिए ऐसा नहीं करना चाहता हूं। क्या मेरे पास कुछ और विकल्प है?किसी विशेष इंटरफ़ेस को लागू करने वाले सभी वर्गों का ट्रैक रखें?
उत्तर
क्या इस समाधान के बारे में:
@Component
public class WithAllMyInterfaceImpls {
@Autowire
List<MyInterface> allBeansThatImplementTheMyInterface;
}
सूची केवल (शुरू में) एक बार से भर जाता है तो यह "सामान्य" क्रम प्रदर्शन में एक महत्वपूर्ण प्रभाव नहीं होना चाहिए।
टिप्पणी:
आप अपने कोड
तुम्हें पता है वसंत एक आईओसी कंटेनर है व्याख्या कर सकते हैं। @Component
वसंत को बताता है कि इसे इस वर्ग का एक उदाहरण बनाना चाहिए (एक तथाकथित स्प्रिंग प्रबंधित बीन)। आईओसी का मतलब यह भी है कि कंटेनर अन्य उदाहरणों (वसंत प्रबंधित बीन्स) के संदर्भों को इंजेक्ट करने के लिए ज़िम्मेदार है। @Autowire
(साथ ही साथ @Resource
और @Inject
- सभी एक ही करते हैं) ऐसी एनोटेशन है जो वसंत को बताती है कि इस क्षेत्र को वसंत द्वारा पॉप्युलेट किया जाना चाहिए। वसंत स्वयं यह पता लगाने की कोशिश करता है कि किस क्षेत्र को मैदान में जाना चाहिए। वसंत उपयोगों की एक डिफ़ॉल्ट तकनीक by type
है इसका मतलब है कि वसंत क्षेत्र के प्रकार का निरीक्षण करता है, और मिलान करने वाले सेम की खोज करता है। आपके मामले में यह एक सामान्य सूची है - यह थोड़ा खास है। इस मामले में वसंत एक सूची के साथ क्षेत्र को पॉप्युलेट करता है, जहां तत्व सभी बीन्स होते हैं जो सामान्य प्रकार से मेल खाते हैं।
एप्लिकेशनकॉन्टेक्स्ट से getBeansOfType विधि के बारे में कैसे? यह आपके इंटरफेस को लागू करने वाले सेम का नक्शा देता है?
- 1. किसी विशेष विशेषता वाले सभी वर्गों को ढूंढना
- 2. दिए गए इंटरफ़ेस को लागू करने वाले सभी वर्गों को कैसे ढूंढें?
- 3. किसी दिए गए इंटरफ़ेस को लागू करने वाले सभी डेल्फी कक्षाओं का आकलन करें?
- 4. एक विशिष्ट इंटरफ़ेस को लागू करने वाले सभी वर्गों को ढूंढना
- 5. इंटरफ़ेस को लागू करने वाले सभी प्रकारों को प्राप्त करना
- 6. इंटरफ़ेस को लागू करने वाले वर्गों में निर्भरता को इंजेक्ट कैसे करें?
- 7. समान इंटरफेस को लागू करने वाले वर्गों के बीच संबंध
- 8. मैं किसी दिए गए इंटरफ़ेस को लागू करने वाले सभी लोड किए गए प्रकारों के सभी उदाहरण कैसे प्राप्त करूं?
- 9. किसी विशिष्ट वर्ग/इंटरफ़ेस से प्राप्त सभी वर्गों की सूची
- 10. सभी इंटरफ़ेस सदस्यों को लागू करें
- 11. एक प्रकार पैरामीटर निर्दिष्ट करने के लिए जो किसी विशेष इंटरफ़ेस को लागू नहीं करता है?
- 12. किसी प्रकार के उदाहरणों की गिनती का ट्रैक कैसे रखें?
- 13. PHP: curl और सभी पुनर्निर्देशनों का ट्रैक रखें
- 14. क्या एक इंटरफ़ेस किसी अन्य इंटरफ़ेस को
- 15. मेरे लिए Moq का उपयोग करने के लिए, क्या मेरे सभी वर्गों को एक इंटरफ़ेस लागू करना है?
- 16. कस्टम क्लास विशेषता वाले सभी वर्गों को कैसे समझाते हैं?
- 17. क्या क्लासलोडर लोड करने वाले वर्गों को प्राप्त करने का कोई तरीका है?
- 18. विधि को लागू करने के लिए उप वर्गों को कैसे लागू करें
- 19. इंटरफ़ेस को लागू करने के लाभ
- 20. मैं एक ही इंटरफेस को लागू करने वाले वर्गों के लिए डुप्लिकेट यूनिट टेस्ट लिखने से कैसे बच सकता हूं?
- 21. जावा सूची है कि सभी एक इंटरफ़ेस को लागू
- 22. लागू इंटरफ़ेस
- 23. एक COM DLL को देखते हुए, सभी वर्गों को सीएलएसआईडी और संबंधित इंटरफ़ेस नाम निकालें
- 24. किसी विशेष नामस्थान के सभी नियंत्रकों को रेल नियंत्रक फ़िल्टर लागू करें?
- 25. किसी विशिष्ट नामस्थान के सभी वर्गों को लेना
- 26. इंटरफेस को लागू करने वाले सरणी के लागू टाइपिंग
- 27. मेमोरी उपयोग को ट्रैक करने वाले एक्सकोड और इंस्ट्रूमेंट्स
- 28. सी # इंटरफेस: क्या इंटरफ़ेस के भीतर इंटरफ़ेस को लागू करने वाले प्रकार को संदर्भित करना संभव है?
- 29. कोई ऑब्जेक्ट किसी इंटरफ़ेस को लागू करता है
- 30. का दृष्टांत सभी वर्गों के लिए एक विशिष्ट अंतरफलक
बस सामान्य वसंत ऑटोवॉयरिंग सुविधा है, कुछ खास नहीं है। यह सिर्फ मूल वसंत सुविधा – Ralph
@ user1117398 है: मैंने इसे थोड़ा सा समझाने के लिए अपना उत्तर बढ़ाया। ऐसा लगता है कि आपको स्प्रिंग 3.0 पढ़ना चाहिए !!! या 3.1 ट्यूटोरियल। – Ralph