使用bean“init-method”延迟Spring MVC启动

时间:2013-09-03 05:51:18

标签: java spring-mvc startup

我的应用程序无法启动,如果它使用的PostgreSQL数据库尚未启动(两者之间的延迟约为2分钟)。这是一个相当复杂的继承项目,我不能过多地调整配置。

我的想法是让一个bean作为Spring容器中的第一个东西运行。我尝试使用注释(@PostConstruct)和xml(<bean id="dbStartupMonitor" class="ee.package.monitoring.DBStartupMonitor" init-method="checkConnection" lazy-init="false" />)对其进行配置,但在这两种情况下,checkConnection()似乎都在运行(不显示任何日志记录)。另外,我怎样才能确保首先创建这个bean?

现在,关于checkConnection(),我们的想法是检查数据库是否已启动。如果不是,请睡一段时间再试一次。这需要阻止Spring MVC容器的其余初始化,但我很确定它不会那样工作。

甚至可以像这样解决它吗?

1 个答案:

答案 0 :(得分:0)

问题是bean初始化的顺序。依赖于数据源的bean首先被初始化,因此在对bean配置xml文件进行了大量挖掘之后,我在我的数据库监视器bean中添加了depends-on属性。这可确保首先初始化监视器。

此外,初始化方法(init-method)确实会阻塞,因此“check-sleep-check直到数据库启动”循环正常工作。