启动和停止应用程序时,我必须更新表条目。
我有一个调用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) {

    }

}

10-07 19:41
查看更多