我正在创建一个使用Quartz的计时器应用程序,也正在使用spring从schema.sql文件初始化我的数据库。当应用程序启动时,我想在创建Scheduler bean之前初始化数据库。

@Bean
public Scheduler scheduler() throws SchedulerException {
    Scheduler scheduler;
    final StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory("application.properties");
    stdSchedulerFactory.initialize();
    scheduler = stdSchedulerFactory.getScheduler();
    scheduler.start();
    return scheduler;
}


Scheduler Bean位于TimerConfiguration.java内部,该属性已添加到TimerApplication中,例如


  @SpringBootApplication @Import({TimerConfiguration.class})
   公共类TimerApplication {


有办法实现吗?

最佳答案

@DependsOn注释指定一个应在另一个bean初始化之后初始化的bean。

建议在注释中将等待bean的名称设置为值。

您的情况是@DependsOn("datasource")

来自文档的更多信息:


  当前bean所依赖的bean。指定的任何豆是
  确保由该bean之前的容器创建。用过的
  在不显式依赖bean的情况下,这种情况很少发生
  另一个通过属性或构造函数参数,但是
  取决于另一个bean初始化的副作用。
  
  可以用在任何直接或间接用Component或注释的类上
  关于使用Bean注释的方法。

07-26 09:29
查看更多