मुझे कक्षाओं के लिए एक वसंत वेब संदर्भ (किसी भी दायरे में) में नए सेम जोड़ने की आवश्यकता है जो संकलन समय पर कक्षापथ में परिभाषित नहीं किया जा सकता है।स्प्रिंग वेब संदर्भ में गतिशील बीन्स जोड़ना
उदाहरण के लिए, मैं कुछ कक्षाओं को गतिशील रूप से बना सकता हूं और फिर इस कक्षा के लिए सिंगलटन या सत्र बीन पंजीकृत कर सकता हूं।
मैं BeanFactoryPostProcessor के बारे में थोड़ा है, लेकिन यकीन है कि अगर यह एक वेब संदर्भ पर काम करेंगे नहीं पढ़ा है, और अगर मैं सही ढंग से समझ यह केवल वास्तव में सेम उदाहरणों लोड करने से पहले और न उसके बाद काम करते हैं, या मैं गलत हूँ होगा?
मैं एनोटेशन कॉनफिग वेब ऐप्लिकेशंस कॉन्टेक्स्ट में ऐसा करने के तरीके के बारे में जानकारी नहीं पा रहा हूं, और कम से कम मेरे परीक्षण में सभी बीन्स जो मैं द्विपक्षीय रूप से बनाते हैं उन्हें अन्य उदाहरणों में इंजेक्शन नहीं दिया जाता है, और यहां तक कि अगर वे केवल मुझे देख रहे थे सिंगलटन बीन्स को पंजीकृत करने की विधि लेकिन अन्य स्कॉप्स के लिए नहीं:
ctx.getBeanFactory().registerSingleton("dummy", dummy);
पीडी
मैं इस सवाल पाया: Dynamic creation of beans in Spring लेकिन जब मैं इस तरह वेब संदर्भ के लिए किसी भी सेम, सेम परिभाषा या सेम परिभाषा बिल्डर को जोड़ने का प्रयास सेम लोड नहीं हो जाता है:
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.setServletContext(servletContext);
ctx.refresh();
//
log.trace("Registering first test bean");
Test test = new Test();
test.setDummy("x1");
ctx.getBeanFactory().registerSingleton("myTestBean1", test);
log.trace("Registering second test bean");
BeanDefinition testDef = new RootBeanDefinition(Test.class);
testDef.setScope(BeanDefinition.SCOPE_SINGLETON);
ctx.getBeanFactory().registerSingleton("myTestBean2", testDef);
Test dummy1 = (Test)ctx.getBean("myTestBean1");
Object dummy2 = ctx.getBean("myTestBean2");
log.trace("beans: 1: {}; 2: {}", dummy1, dummy2); //<--this works, but...
ctx.refresh();
ctx.register(MyConfig.class); //configuring other beans
... जब मैं (एक और गतिशील घटक यह भी भी हो सकता है) एक और सेम MyConfig.class अंदर कॉन्फ़िगर किया गया या @Component साथ एनोटेट से ऐसा करते हैं:
@Autowire Test myTestBean1;
//Or this:
Object a = this.ctx.getBean("myTestBean1"); //Or myTestBean2
यह एक NoSuchBeanDefinitionException
012 फेंकताकृपया मेरी मदद करें !! मैं बहुत कुछ देख रहा था और किसी भी उपयोगी जानकारी को मिला, या शायद मेरे पास है लेकिन मैं इस तरह के कम समय में वेब में जो कुछ भी पाता हूं उसका परीक्षण नहीं कर सकता हूं और बसंत दस्तावेज सामान्य मामलों और एक्सएमएल कॉन्फ़िगरेशन के लिए बहुत अच्छा लगता है, नहीं इस पागल चीजों के लिए मैं करने की कोशिश कर रहा हूं और प्रोग्रामिक रूप से कॉन्फ़िगरेशन के लिए नहीं।
मुझे आश्चर्य है अगर जावा कोड में स्पष्ट रूप से निपटने वस्तु lifecycles बातें सरल –