bean创建之前的数据库初始化

时间:2016-12-01 06:38:33

标签: java spring spring-boot quartz-scheduler quartz

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

@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 {

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

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

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

在你的情况下是@DependsOn("datasource")

来自文档的更多信息:

  

当前bean所依赖的Bean。指定的任何bean都是   保证在此bean之前由容器创建。用过的   在bean没有明确依赖的情况下很少发生   另一个是通过属性或构造函数参数,而是   取决于另一个bean的初始化的副作用。

     

可以在任何直接或间接使用Component或注释的类上使用   关于使用Bean注释的方法。