मेरी टिप्पणी के बाद, एक्सएमएल के इस टुकड़े
<bean id="base" abstract="true">
<property name="foo" ref="bar"/>
</bean>
<bean class="Wallace" parent="base"/>
<bean class="Gromit" parent="base"/>
कम या ज्यादा eqivalent इस कोड (ध्यान दें कि मैं कृत्रिम Base
श्रेणी का निर्माण के बाद से वसंत में सार सेम एक class
जरूरत नहीं है) के लिए है:
public abstract class Base {
@Autowired
protected Foo foo;
}
@Component
public class Wallace extends Base {}
@Component
public class Gromit extends Base {}
Wallace
और Gromit
अब आम Foo
संपत्ति तक पहुंच है। इसके अलावा आप इसे ओवरराइड कर सकते हैं, उदा। @PostConstruct
में।
BTW मैं वास्तव में एक्सएमएल जो सेम सूखा रखने के लिए अनुमति में parent
सुविधा पसंद किया, लेकिन जावा दृष्टिकोण भी क्लीनर लगता है।
- (एक संभावित कार्यान्वयन कि घटक स्कैन से इंजेक्ट किया गया था के लिए context.xml-घोषणा के साथ एक सामान्य सार माता पिता कक्षा जो बीन्स का इस्तेमाल किया) यह है कि मैं क्या हो सकता था है
स्रोत
2011-11-25 15:03:29
तुम सिर्फ विरासत का उपयोग नहीं कर सकते हैं? बेस क्लास में ऑटोवॉयरिंग उसी तरह काम करेगी। –
@Tomasz Nurkiewicz मैं वसंत माता पिता सेम एक्सएमएल में परिभाषित किया गया है (यह "डिफ़ॉल्ट" मूल्यों के लिए कुछ संपत्ति के सेट है)। ऐसा कुछ नहीं है जिसे मैं बदल सकता हूं। – IAdapter
मैं आगे मेरा विचार समझाने के लिए एक जवाब गयी। क्या आप थोड़ा और विस्तार कर सकते हैं कि यह आपकी आवश्यकताओं के अनुरूप क्यों नहीं है? एक्सएमएल में आप मूल परिभाषा क्यों नहीं बदल सकते? मैं यह टिप्पणी से माता-पिता को संदर्भित करने के लिए संभव नहीं है डर लग रहा है ... और यदि 'base' सेम के साथ या कृत्रिम' Bean' वर्ग बनाने और 'Wallace' और' ग्रोमिट के बिना, एक्सएमएल में परिभाषित किया जाएगा –