एक @Configuration
एनोटेट वर्ग बनाएँ :
@Configuration
public class MyApplicationContext {
}
प्रत्येक <bean>
टैग के लिए एनोटेट के साथ एक विधि बनाएं @Bean
:
@Configuration
public class MyApplicationContext {
@Bean(name = "someBean")
public SomeClass getSomeClass() {
return new SomeClassImpl(someInterestingProperty); // We still need to inject someInterestingProperty
}
@Bean(name = "anotherBean")
public AnotherClass getAnotherClass() {
return new AnotherClassImpl(getSomeClass(), beanFromSomewhereElse); // We still need to inject beanFromSomewhereElse
}
}
आयात करने के लिए beanFromSomewhereElse
हमें इसकी परिभाषा करने की आवश्यकता है। इसे एक XML में परिभाषित किया जा सकता है और हम इसका उपयोग करेंगे @ImportResource
:
@ImportResource("another-application-context.xml")
@Configuration
public class MyApplicationContext {
...
}
यदि बीन को दूसरे @Configuration
वर्ग में परिभाषित किया जाता है तो हम @Import
एनोटेशन का उपयोग कर सकते हैं :
@Import(OtherConfiguration.class)
@Configuration
public class MyApplicationContext {
...
}
अन्य XML या @Configuration
कक्षाओं को आयात करने के बाद , हम अपने संदर्भ में घोषित बीन्स का उपयोग @Configuration
कक्षा के लिए एक निजी सदस्य की घोषणा करके कर सकते हैं:
@Autowired
@Qualifier(value = "beanFromSomewhereElse")
private final StrangeBean beanFromSomewhereElse;
या यह सीधे विधि है जो सेम है कि इस पर निर्भर करता है परिभाषित करता है में पैरामीटर के रूप में उपयोग करने beanFromSomewhereElse
का उपयोग कर @Qualifier
इस प्रकार है:
@Bean(name = "anotherBean")
public AnotherClass getAnotherClass(@Qualifier (value = "beanFromSomewhereElse") final StrangeBean beanFromSomewhereElse) {
return new AnotherClassImpl(getSomeClass(), beanFromSomewhereElse);
}
अन्य xml या @Configuration
वर्ग से बीन आयात करने के लिए गुण आयात करना बहुत समान है । उपयोग करने के बजाय @Qualifier
हम @Value
गुणों के साथ उपयोग करेंगे:
@Autowired
@Value("${some.interesting.property}")
private final String someInterestingProperty;
यह स्पेल भाव के साथ भी इस्तेमाल किया जा सकता है ।
ऐसे कंटेनरों के रूप में वसंत का इलाज करने की अनुमति देने के लिए हमें इस टैग को संदर्भ में रखकर हमारे मुख्य xml में इसे चिह्नित करने की आवश्यकता है:
<context:annotation-config/>
अब आप @Configuration
कक्षाओं को ठीक उसी तरह आयात कर सकते हैं जैसे आप एक साधारण बीन बनाएंगे:
<bean class="some.package.MyApplicationContext"/>
वसंत एक्सएमएल से पूरी तरह से बचने के तरीके हैं लेकिन वे इस उत्तर के दायरे में नहीं हैं। आप मेरे ब्लॉग पोस्ट में इनमें से एक विकल्प का पता लगा सकते हैं, जिस पर मैं अपना उत्तर दे रहा हूं।
मूल रूप से मुझे कुछ फायदे के कारण एक्सएमएल का उपयोग करने की तुलना में सेम को अधिक आरामदायक घोषित करने की यह विधि मिलती है:
नुकसान कई नहीं हैं क्योंकि मैं उन्हें देखता हूं, लेकिन कुछ ऐसे हैं जो मैं सोच सकता था: