कृपया ध्यान दें कि; नीचे दिया गया कोड पहले से लोड किए गए उपयोग का उपयोग करने के बजाय नया एप्लिकेशन संदर्भ बनाएगा।
private static final ApplicationContext context =
new ClassPathXmlApplicationContext("beans.xml");
भी ध्यान रखें कि beans.xml
युद्ध में src/main/resources
साधन का हिस्सा यह WEB_INF/classes
, जहां के रूप में असली आवेदन applicationContext.xml
Web.xml
में उल्लेख के माध्यम से लोड किया जाएगा का हिस्सा है होना चाहिए।
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>META-INF/spring/applicationContext.xml</param-value>
</context-param>
यह ClassPathXmlApplicationContext
निर्माता में applicationContext.xml
पथ का उल्लेख difficult है। ClassPathXmlApplicationContext("META-INF/spring/applicationContext.xml")
फ़ाइल का पता लगाने में सक्षम नहीं होगा।
तो एनोटेशन का उपयोग करके मौजूदा एप्लिकेशन कॉन्टेक्स्ट का उपयोग करना बेहतर है।
@Component
public class OperatorRequestHandlerFactory {
public static ApplicationContext context;
@Autowired
public void setApplicationContext(ApplicationContext applicationContext) {
context = applicationContext;
}
}
स्रोत
2016-12-05 07:44:13
एप्लिकेशनकॉन्टेक्स - एप्लिकेशनकॉन्टेक्स्टवेयर के लिए एक बेहतर इंटरफ़ेस भी है। BeanFactoryAware काम करना चाहिए, लेकिन यदि आपको ऐप संदर्भ कार्यक्षमता की आवश्यकता है तो आपको इसे एप्लिकेशन संदर्भ में डालना होगा। – MetroidFan2002
टिप के लिए धन्यवाद, मैंने जवाब अपडेट किया है। –
@ डॉन किर्कबी सिंगलटन पैटर्न का उपयोग करने से आपके कंटेनर क्लास को आपके कंटेनर क्लास के भीतर एक स्थैतिक विधि से instanciating का मतलब है ... एक बार जब आप किसी ऑब्जेक्ट को "मैन्युअल रूप से" उत्पन्न करते हैं तो यह अब स्प्रिंग द्वारा प्रबंधित नहीं होता है: आप इस समस्या से कैसे निपटते हैं? – Antonin