संपादित करें: यह प्रश्न When does destroy method is called जैसा नहीं है क्योंकि मैं context.registerShutdownHook
पर ठीक से कॉल कर रहा हूं और मेरे बीन लॉग इन से देख सकते हैं क्योंकि आप लॉग से देख सकते हैं। मेरी समस्या वसंत मेरी विधि को नहीं बुला रही है। मैंने यहां पूछने से पहले इस सवाल की जांच की है।विध्वंस विधि वसंत ढांचे में काम नहीं कर रही है
मैं वसंत ढांचे का उपयोग कर अपने आवेदन में सुंदर विनाश को विन्यस्त कर रहा हूं। जब मैं प्रोग्राम चला रहा हूं तो यह bean.xml में निर्दिष्ट destory विधि को कॉल नहीं कर रहा है। कृपया मेरी मदद करें मैं गलत क्या कर रहा हूं।
यहाँहै Bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloworld" class="com.hello.pojo.HelloWorld"
scope="prototype" init-method="init" destroy-method="destroy">
</bean>
</beans>
HelloWord.java
package com.hello.pojo;
public class HelloWorld {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void init(){
System.out.println("Bean initializating is in progress");
}
public void printMessage(){
System.out.println("Your message: "+getMessage());
}
public void destroy(){
System.out.println("Bean is being destroyed");
}
}
MainApp.java
package com.main;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hello.pojo.HelloWorld;
public class MainApp {
public static void main(String[]args){
AbstractApplicationContext context = new ClassPathXmlApplicationContext("Bean.xml");
HelloWorld objA = (HelloWorld) context.getBean("helloworld");
objA.setMessage("I am Object A");
objA.printMessage();
context.registerShutdownHook();
}
}
आउटपुट
May 27, 2013 11:59:14 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org[email protected]e9028874: startup date [Mon May 27 23:59:14 EDT 2013]; root of context hierarchy
May 27, 2013 11:59:14 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [Bean.xml]
Bean initializating is in progress
Your message: I am Object A
May 27, 2013 11:59:14 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.s[email protected]63390b47: defining beans [helloworld]; root of factory hierarchy
May 27, 2013 11:59:14 PM org.springframework.context.support.ClassPathXmlApplicationContext doClose
INFO: Closing org[email protected]e9028874: startup date [Mon May 27 23:59:14 EDT 2013]; root of context hierarchy
May 27, 2013 11:59:14 PM org.springframework.beans.factory.support.DefaultListableBeanFactory destroySingletons
INFO: Destroying singletons in org.s[email protected]63390b47: defining beans [helloworld]; root of factory hierarchy
संशोधन: मैं close
और registerShutdownHook()
की कोशिश की है संदर्भ बंद करने के लिए और उनमें से कोई काम करता है।
@ मैडप्रोग्रामर मुझे लगता है कि हम बीन.एक्सएमएल में किसी भी नाम के साथ विधि को कॉन्फ़िगर कर सकते हैं जब तक कि दोनों का एक ही नाम हो। हालांकि मैंने विनाश के साथ भी कोशिश की और यह काम नहीं कर रहा है – Ashish
@ मैडप्रोग्रामर मुझे लगता है कि आपका मतलब है 'नष्ट', 'विनाश' नहीं;) – Vulcan
@ वल्कन मुझे लगता है कि मेरा मतलब बीयर है;) – MadProgrammer