gpt4 book ai didi

java - Spring:当 Web 应用程序启动和停止时更新 DB 表条目

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:17 25 4
gpt4 key购买 nike

当应用程序启动和停止时,我必须更新表条目。我有一个调用 DAO 方法的服务,但是当调用此 DAO 方法时, Autowiring 的 SessionFactory 为 null。

我使用了两种方法:

  1. @PostConstruct、@PreDestroy
  2. ApplicationListener onApplicationEvent()

在这两种情况下,我在 DAO 类中都将 SessionFactory 设为 null。我在 DAO 类中使用 Setter-Injection 来注入(inject) SessionFactory

环境:JDBC数据源、Hibernate 3.4、Spring 3.1.2、Weblogic 10.3

如果您能为我指明正确的方向,那就太好了。

更新:感谢您的所有评论,我已经解决了。我们的应用程序是 EAR,我的 DAO bean 配置位于不同的 WAR 的 applicationContext.xml 中。我将 DAO bean 配置移至我的共享配置 (appConfig.xml),它的工作方式非常出色。我使用了@PostConstruct和@PreDestroy

最佳答案

您可以使用 SmartLifecycle 接口(interface)来完成此操作,然后将其配置为 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) {

}

}

关于java - Spring:当 Web 应用程序启动和停止时更新 DB 表条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21004040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com