Spring инициирует и уничтожает методы - PullRequest
2 голосов
/ 04 августа 2011
package com.idol;

public class Auditorium {       
Auditorium(){
}  
public void turnOnLights() {  
    System.out.println("Lights are turned on"); 
}  
public void turnOffLights(){  
    System.out.println("Lights are turned off");
}  

}

Для xml контекста у меня есть:

 <bean id="Auditorium" class="com.idol.Auditorium" init-method="turnOnLights" destroy-method="turnOffLights"/>

Тестирование:

ApplicationContext auditorium =
        new ClassPathXmlApplicationContext("ApplicationContextVer6.xml"); 

auditorium.getBean("Auditorium");

Я получаю:

Печатает только «Свет включен» и не печатает «Свет выключен».Я думаю, что перед уничтожением компонента он должен также вызвать метод destroy, что я пропускаю или не получаю?(У меня нет ошибок в журнале, на всякий случай)

Спасибо

Ответы [ 2 ]

5 голосов
/ 04 августа 2011

Попробуй так:

final ConfigurableApplicationContext auditorium =
        new ClassPathXmlApplicationContext("ApplicationContextVer6.xml");
auditorium.getBean("Auditorium");
auditorium.close(); // thx Nathan

// auditorium.refresh() will also turn the lights off
// before turning them on again
0 голосов
/ 04 августа 2011

Вы не можете наблюдать, как работает метод destroy, потому что bean-компоненты всегда доступны в контексте Spring. Когда вы закрываете / уничтожаете контекст своего приложения, все компоненты, созданные в нем, должны быть уничтожены. Взгляните на методы close() и destroy() в классе org.springframework.context.support.AbstractApplicationContext.

...