我在beans.xml
定義一個Spring bean如下:@PreDestroy方法不叫
<context:annotation-config />
[...]
<bean id="myBackend" class="mycompany.BackendBean" scope="singleton" />
豆內部是2種方法,必須在開始和終止之前執行Web應用程序:
public class BackendBean implements IBackend {
private static final Logger LOGGER = LoggerFactory
.getLogger(BackendBean.class);
@PostConstruct
public void init()
{
LOGGER.debug("init");
}
@PreDestroy
public void destroy()
{
LOGGER.debug("destroy");
}
}
當運行服務器(mvn jetty:run
),I可以看到init
方法的在控制檯的輸出,從中我結束時所執行的方法init
。
當我按Ctrl-C
和Jetty開始關閉時,我看不到destroy
方法的輸出。
當應用程序終止時,爲了執行destroy
方法,應該更改什麼?
你打算在jetty上運行應用程序嗎?或者你需要在更多的容器中運行它? – ssedano 2013-05-04 10:30:03
我只使用Jetty進行快速測試。在生產中,我使用的是Apache Tomcat 7. – 2013-05-04 10:32:36