मेरे आवेदन के पूरा होने के बाद मैं वसंत संदर्भ बंद करना चाहता हूं।
प्रासंगिक कोड का एक 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