मेरे आवेदन के पूरा होने के बाद मैं वसंत संदर्भ बंद करना चाहता हूं।
प्रासंगिक कोड का एक ApplicationContextसंदर्भ है, लेकिन मुझे कोई closeविधि नहीं मिली ।
जवाबों:
डाउनकास्ट ApplicationContextकरने के लिए अपनी विधि ConfigurableApplicationContextपरिभाषित करता close()है:
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContextकि एक वर्ग है और ConfigurableApplicationContextउस वर्ग द्वारा लागू किया गया एक इंटरफ़ेस है, ज्यादातर मामलों में उत्तरार्द्ध का उपयोग करना शायद बेहतर होता है।
ConfigurableApplicationContextअब विस्तार होता है Closable(यह नहीं जानते कि यह परिवर्तन किस संस्करण में किया गया था, लेकिन 4.2.x के लिए डॉक्स इसे दिखाते हैं जबकि 3.0.x नहीं) बहुत छोटा संस्करण है ((Closable)context).close();।
AutoCloseableकार्यान्वयन भी है , जिसका अर्थ है कि एक कोशिश के साथ संसाधनों का उपयोग किया जा सकता है, जब तक कि आप अपना संदर्भ एक चर में संग्रहीत करते हैं जहां AutoCloseableइंटरफ़ेस दिखाई देता है, अर्थातtry (ConfigurableApplicationContext context = new ....) { /* your code goes here */ } // context is closed when you leave the try block
आपको जेवीएम के साथ शटडाउन हुक को पंजीकृत करने की आवश्यकता है जैसा कि नीचे दिखाया गया है:
((AbstractApplicationContext)appCtx).registerShutdownHook();
अधिक जानकारी के लिए देखें: स्प्रिंग मैनुअल: 3.6.1.6 गैर-वेब अनुप्रयोगों में शान से आईओसी कंटेनर को बंद करना
यदि आप संदर्भ को नीचे की तरह शुरू करते हैं
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);
इन जैसे स्वच्छ संदर्भ
((ClassPathXmlApplicationContext) context).close();
यदि जावा एसई 7 और बाद में , बंद न करें, तो कोशिश के साथ संसाधनों का उपयोग करें जो यह सुनिश्चित करता है कि प्रत्येक संसाधन बयान के अंत में बंद है।
try(final AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"classpath*:META-INF/spring/*.xml" }))
{
//write your code
}
ApplicationContextऑब्जेक्ट को बंद करने के लिए कदम
ApplicationContextऑब्जेक्ट को ConfigurableApplicationContextऑब्जेक्ट टाइप करें ।उदाहरण:
ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml");
((ConfigurableApplicationContext)context ).close();
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("SpringCnf.xml");
Resturant rstro1=(Resturant)context.getBean("resturantBean");
rstro1.setWelcome("hello user");
rstro1.welcomeNote();
((ClassPathXmlApplicationContext) context).close();
AbstractApplicationContext