मैं इस link पर आया जो बताता है कि एक बीन विरासत में कैसे प्राप्त किया जा सकता है। यह मानते हुए कि इस उदाहरण में हैलोवर्ल्ड क्लास को @ कॉम्पोनेंट एनोटेशन का उपयोग करके एक बीन के रूप में उजागर किया गया है, यह बीन विरासत में कैसे एक और बीन बना सकता है? क्या मैं हैलोवर्ल्ड बीन का उत्तराधिकारी बनाने के लिए विस्तार कर सकता हूं और मौजूदा बीन को अतिरिक्त सुविधाओं के साथ एक नए बीन के रूप में उजागर करने के लिए नई कक्षा में @ कॉम्पोनेंट जोड़ सकता हूं?वसंत विरासत - एनोटेशन
उत्तर
सबसे पहले आप अपने सार विन्यास, जो @Configuration
रूप नहीं यह अंकन द्वारा हासिल की है बनाने के लिए, इस तरह:
// notice there is no annotation here
public class ParentConfig {
@Bean
public ParentBean parentBean() {
return new ParentBean();
}
}
एक तो आप इसके विस्तार, इस तरह:
@Configuration
public class ChildConfig extends ParentConfig {
@Bean
public ChildBean childBean() {
return new ChildBean();
}
}
परिणाम वही होगा जैसा आपने किया था:
@Configuration
public class FullConfig {
@Bean
public ParentBean parentBean() {
return new ParentBean();
}
@Bean
public ChildBean childBean() {
return new ChildBean();
}
}
संपादित: टिप्पणी में अनुवर्ती सवाल का जवाब।
यदि वसंत दोनों कक्षाओं, माता-पिता और बच्चे को उठाता है, तो डुप्लीकेट बीन्स के साथ समस्याएं होंगी, इसलिए आप इसे सीधे तक विस्तारित नहीं कर सकते हैं। यहां तक कि यदि आप विधियों को ओवरराइड करते हैं, तो सुपर-क्लास के सेम भी ParentConfig
द्वारा तत्काल हो जाएंगे।
के बाद से अपने माता पिता के वर्ग पहले से ही संकलित किया गया है, तो आप 2 विकल्प हैं:
माता पिता वर्ग के लेखक से बात करें और कृपया उसे इसे बदलने के लिए पूछना।
@ComponentScan
पैकेज बदलें।
समाधान 2 पर स्पष्ट करने के लिए:
माता पिता वर्ग पैकेज com.parent.ParentConfig
में है और बच्चे के वर्ग पैकेज com.child.ChildConfig
है, तो आप घटक स्कैनिंग कॉन्फ़िगर कर सकते हैं ताकिcom.child
केवल कक्षाओं के तहत प्राप्त उठाया।
आप अपनी मुख्य विन्यास फाइल (सोच अनुप्रयोग वर्ग) पर @ComponentScan("com.child")
एनोटेशन का उपयोग कर घटक स्कैनिंग पैकेज निर्दिष्ट कर सकते हैं।
- 1. वसंत @ ट्रांस्सेक्शन एनोटेशन गुण प्राथमिकता/विरासत
- 2. वसंत MVC @RequestMapping विरासत
- 3. वसंत: @ नियंत्रक एनोटेशन
- 4. एंड्रॉयड-एनोटेशन और विरासत
- 5. वसंत और एनोटेशन @ वैल्यू
- 6. वसंत सुरक्षा मेटा एनोटेशन
- 7. नया वसंत एनोटेशन
- 8. वसंत @ ट्रान्सएक्शनल एनोटेशन अनदेखा
- 9. वसंत @ ट्रांसेक्शन एनोटेशन
- 10. वसंत एनोटेशन सलाह क्रम
- 11. एकाधिक वसंत @RequestMapping एनोटेशन
- 12. वसंत @ कॉन्फ़िगरेशन एनोटेशन
- 13. वसंत MVC - एनोटेशन
- 14. वसंत @ ट्रांसेक्शनल विरासत नियम
- 15. वसंत: एनोटेशन-संचालित लेनदेन प्रबंधक
- 16. वसंत-नलपोइनटेरेक्सप्शन- गैर-एनोटेशन कक्षा
- 17. वसंत एमवीसी एनोटेशन सत्यापन पूर्णांक
- 18. एएसपी.नेट एमवीसी डेटा एनोटेशन विरासत RegularExpressionAttribute
- 19. जावा ईई 6 एनोटेशन विरासत का रहस्य
- 20. प्रदर्शन वसंत javaconfig, xml config और एनोटेशन
- 21. इंटरफ़ेस विधियों पर वसंत @ एसिंक एनोटेशन
- 22. घाट 9 + JDK 8 + वसंत 4 एनोटेशन
- 23. जेनेरिक वसंत MVC नियंत्रक के साथ विरासत
- 24. वसंत एमवीसी नियंत्रक विरासत और रूटिंग
- 25. एनोटेशन
- 26. एनोटेशन
- 27. एनोटेशन
- 28. कैसे एनोटेशन
- 29. एनोटेशन
- 30. विरासत विधियों में एनोटेशन जोड़ने का सबसे अच्छा तरीका
धन्यवाद ईसाला। मेरे मामले में, जिस वर्ग को मैं विस्तारित करने का प्रयास कर रहा हूं वह एक जार का हिस्सा है और इसे घटक एनोटेशन परिभाषित किया गया है। मैं एक नया बीन बनाना चाहता हूं जो इसे बढ़ाता है और एक विधि को ओवरराइड करता है। –
@PunterVicky मैंने आपके अनुवर्ती प्रश्न का उत्तर जोड़ा है :) – ESala
धन्यवाद, ईसाला! –