मेरे पास एक ड्रॉपविज़ार्ड एप्लिकेशन है जिसे कॉन्फ़िगरेशन सूची में प्रत्येक कॉन्फ़िगरेशन के लिए दर्जन या उससे अधिक बीन्स उत्पन्न करने की आवश्यकता होती है। स्वास्थ्य की जांच, क्वार्टज शेड्यूलर, आदि इस तरहवसंत - प्रोग्रामेटिक रूप से बीन्स का एक सेट उत्पन्न करें
कुछ जैसी चीजें:
@Component
class MyModule {
@Inject
private MyConfiguration configuration;
@Bean
@Lazy
public QuartzModule quartzModule() {
return new QuartzModule(quartzConfiguration());
}
@Bean
@Lazy
public QuartzConfiguration quartzConfiguration() {
return this.configuration.getQuartzConfiguration();
}
@Bean
@Lazy
public HealthCheck healthCheck() throws SchedulerException {
return this.quartzModule().quartzHealthCheck();
}
}
मुझे लगता है कि सभी इस तरह सेम की जरूरत MyConfiguration के कई उदाहरण है। अभी मुझे इन परिभाषाओं की प्रतिलिपि बनाना और पेस्ट करना है और प्रत्येक नई कॉन्फ़िगरेशन के लिए उनका नाम बदलना है।
क्या मैं किसी भी तरह से अपने विन्यास वर्गों पर पुनरावृत्ति कर सकता हूं और प्रत्येक के लिए बीन परिभाषाओं का एक सेट उत्पन्न कर सकता हूं?
मैं एक सबक्लासिंग समाधान या किसी भी चीज के साथ ठीक हूं जो मुझे कॉपी करने और उसी कोड को पेस्ट किए बिना सुरक्षित है और कभी भी मुझे एक नई सेवा जोड़ने के तरीकों का नाम बदलना होगा।
संपादित करें: मैं जोड़ने चाहिए मैं अन्य घटकों है कि इन सेम पर निर्भर है कि (वे Collection<HealthCheck>
उदाहरण के लिए इंजेक्षन।)
या तो आपको 'बीनडिफिनिशन रजिस्ट्रीपोस्टप्रोसेसर' द्वारा बीन परिभाषाओं को पंजीकृत करने की आवश्यकता है या कुछ संदर्भ पदानुक्रम जादू (अपने मॉड्यूल के लिए अलग-अलग संदर्भ जहां निर्भरता खुद को मूल संदर्भ में पंजीकृत कर सकते हैं) या वसंत को इंजेक्ट करने के बजाय बस एक सेवा लुकअप करें निर्भरता (यानी 'ApplicationContext # getBeansOfType')। –