启动和停止应用程序时,我必须更新表条目。
我有一个调用DAO方法的服务,但是当调用此DAO方法时,自动连接的SessionFactory
为null。
我使用了2种方法:
@ PostConstruct,@ PreDestroy
ApplicationListener onApplicationEvent()
在这两种情况下,我在DAO类中都将SessionFactory
设置为null。我在DAO类中使用Setter-Injection来注入SessionFactory
。
环境:JDBC-Datasource,Hibernate 3.4,Spring 3.1.2,Weblogic 10.3
如果您能指出正确的方向,那就太好了。
更新:
感谢您的所有意见,我已解决了该问题。我们的应用程序是EAR,我的DAO bean配置位于其他WAR的applicationContext.xml中。我将DAO bean配置移到了共享配置(appConfig.xml),它的工作原理很吸引人。我使用了@PostConstruct和@PreDestroy
最佳答案
您可以使用SmartLifecycle
界面,然后将其配置为bean:
<bean class="com.my.package.MySmartlifecycle">
和您的实现:
public class MySmartLifecycle implements SmartLifecycle{
//autowire anything you need from context
@Override
public void start() {
//do stuff on startup here
}
@Override
public void stop() {
//do stuff on shutdown here
}
@Override
public boolean isRunning() {
return false;
}
@Override
public int getPhase() {
return 0;
}
@Override
public boolean isAutoStartup() {
return true;
}
@Override
public void stop(Runnable callback) {
}
}