我想创建一个具有start()和stop()方法的bean。当webapp的上下文处于活动状态时,会在Spring的运行时启动期间调用start()。当webapp被取消部署或停止时,将调用stop()方法。
这是正确的:我用@PostConstruct注释我的start()方法,用@PreDestroy注释stop()方法?
通常在servlet世界中,我会编写一个ServletContextListener。我能否从ServletContextListener访问ApplicationContext?
发布于 2009-11-19 18:21:22
你可以像你描述的那样注释你的start()和stop()方法,或者你可以告诉Spring显式地调用它们,例如
<bean class="MyClass" init-method="start" destroy-method="stop"/>至于ServletContextListener,它不能很容易地访问Spring上下文。最好使用Spring自己的生命周期来初始化bean。
发布于 2010-03-04 21:40:06
在bean中实现Lifecycle或SmartLifecycle接口,如中所述
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-lifecycle-processor
public interface Lifecycle {
void start();
void stop();
boolean isRunning();
}然后,您的ApplicationContext会将其启动和停止事件级联到所有生命周期实现。另请参阅JavaDocs:
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/Lifecycle.html
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/SmartLifecycle.html
https://stackoverflow.com/questions/1762246
复制相似问题