2011-03-21 15 views
7

हम जावा आधारित स्प्रिंग कॉन्फ़िगरेशन करने के लिए @Configuration कक्षाओं का उपयोग करते हैं। मैं AnnotationConfigApplicationContext (ओं) का पदानुक्रम स्थापित करने की कोशिश कर रहा हूं।एनोटेशन आधारित कॉन्फ़िगरेशन पदानुक्रम

ऐसा लगता है कि यह काम करता है। जैसा कि मैं बाल संदर्भों में से एक से बने बीन्स के सदस्यों के रूप में माता-पिता के संदर्भ से स्वस्थ बीन्स कर सकता हूं।

हालांकि मैं मूल संदर्भ से Autowire बीन्स को @Configuration कक्षा फ़ाइलों में प्रबंधित नहीं कर रहा हूं, जो कि बहुत आसान है। वे सब शून्य हैं।

// parent context config 
@Configuration 
public class ParentContextConfig{ 
    @Bean parentBeanOne... 
    @Bean parentBeanTwo... 
} 

// child context config 
@Configuration 
public class ChildContextConfig{ 
    @Autowired parentBeanOne 

    @Bean childBeanOne... 
} 

// a sample bean 
@Component 
public class ChildBeanOne{ 
    @Autowired parentBeanTwo 
} 

इस नमूने में, क्या मैं हो रही है parentBeanTwo जबकि parentBeanOne कॉन्फ़िग फ़ाइल को autowired नहीं है (null) ठीक से बनाई गई है।

मुझे क्या याद आ रही है?

+0

आपने माता-पिता/बाल संबंध कैसे स्थापित किए हैं? – skaffman

+0

मैंने पाया है कि चाइल्डकॉन्टेक्सट्स को ऑटोवॉयरिंग काम करता है यदि आप उन एनोटेशन कॉन्फिग एप्प्लिकेशन कॉन्टेक्स्ट को मूल संदर्भ पर बीन्स के रूप में घोषित करते हैं। हालांकि मुझे "परिपत्र संदर्भ" मिलना शुरू हो गया है? संबंधित अपवाद ... मैं किसी भी परिपत्र संदर्भ की पहचान नहीं कर सकता। – Rafael

+0

मैंने @configurable कॉन्फ़िगरेशन कक्षाओं को पंजीकृत करने से पहले सेटपेरेंट (सीटीएक्स) करके रिश्ते को सेट किया है। – Rafael

उत्तर

0

मुझे लगता है कि वसंत चाहता है कि आप मानक जावा पदानुक्रम नियमों का उपयोग कॉन्फ़िगरेशन ऑब्जेक्ट्स के अभिभावक बाल संबंध स्थापित करने के लिए करें। यही है, बाल कॉन्फ़िगरेशन क्लास पैरेंट कॉन्फ़िगरेशन क्लास का विस्तार करें।

+0

हाँ, लेकिन यह बिल्कुल वही बात नहीं है। चूंकि पूरे वर्ग पदानुक्रम एक ही वसंत संदर्भ में होंगे। कुछ मामलों में आप एक बच्चे के संदर्भ को माता-पिता संदर्भ का उपयोग करना चाहते हैं, न कि दूसरी तरफ, जैसे सर्वलेट कंटेनर आदि। – Rafael

+1

क्या इस पर कोई नया विकास है? यह एक बुनियादी विन्यास आवश्यकता के रूप में लगता है। – Eugen

0

इस कार्य के लिए, अपने बच्चे संदर्भ माता पिता संदर्भ, उदा .:

@Configuration 
@Import(ParentContextConfig.class) 
public class ChildContextConfig{ 
    @Autowired parentBeanOne 
    ... 
    } 

के बारे में @Configuration अधिक infos के लिए वसंत दस्तावेज का संदर्भ लें आयात करना चाहिए।

संबंधित मुद्दे