2012-11-08 3 views
7

मैंने एक custome स्रोत (ZooKeeper) से गुण लोड करने के लिए ApplicationContextInitializer कार्यान्वयन बनाया है और उन्हें ApplicationContext की संपत्ति स्रोत सूची में जोड़ें।ApplicationContextInitializer?

मैं जो दस्तावेज पा सकता हूं वह स्प्रिंग वेब-ऐप्स से संबंधित है, लेकिन मैं इसे स्टैंडअलोन संदेश लेने वाले एप्लिकेशन में उपयोग करना चाहता हूं।

क्या मेरे कार्यान्वयन को तत्काल करने के लिए सही दृष्टिकोण है, संदर्भ बनाएं, फिर संदर्भ को मेरे कार्यान्वयन 'मैन्युअल' में पास करें? या क्या मुझे ढांचे के लिए कुछ स्वचालित सुविधा याद आ रही है जो मेरे प्रारंभिकरण को मेरे संदर्भ में लागू करेगी?

उत्तर

1

अगर मैं समस्या सही ढंग से समझ, आप वसंत प्रलेखन धारा 4. आईओसी कंटेनर

अपने ऐप के शुरू करने के लिए पर एक उदाहरण में समाधान पा सकते हैं यहाँ है - 4.2.2 Instantiating a container

इसके अलावा एक है 5.7 Application contexts and Resource paths

8

पर मुझे एक रिक्त संदर्भ के साथ प्रारंभ करके संदर्भ आरंभ करने के लिए स्प्रिंगएमवीसी की रणनीति को लागू करने के लिए पर्याप्त सरल पाया गया है। सामान्य अनुप्रयोग संदर्भों में, ऐसा कुछ भी नहीं है जो ApplicationContextInitializer का उपयोग करता है, इस प्रकार आपको इसे अपने आप निष्पादित करना होगा।

कोई समस्या नहीं है, हालांकि सामान्य जे 2 एसई आवेदन के भीतर आपके पास संदर्भ लोडर ब्लॉक का स्वामित्व है, तो आपके पास जीवन चक्र के हर चरण तक पहुंच होगी।

// Create context, but dont initialize with configuration by calling 
// the empty constructor. Instead, initialize it with the Context Initializer. 
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); 
MyAppContextInitializer initializer = new MyAppContextInitializer(); 
initializer.initialize(ctx); 

// Now register with your standard context 
ctx.register(com.my.classpath.StackOverflowConfiguration.class); 
ctx.refresh() 

// Get Beans as normal (e.g. Spring Batch) 
JobLauncher launcher = context.getBean(JobLauncher.class); 

मुझे आशा है कि इससे मदद मिलती है!

0

अन्य संस्करणों के बारे में सुनिश्चित नहीं हैं, लेकिन वसंत 4 में:

AbstractApplicationContext ctx = new AnnotationConfigApplicationContext(yourConfig.class);