我正在创建一个使用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 {
有没有办法实现这个目标?
答案 0 :(得分:3)
@DependsOn
注释指定了在初始化另一个bean之后应该初始化的bean。
建议将等待bean的名称设置为注释中的值。
在你的情况下是@DependsOn("datasource")
。
来自文档的更多信息:
当前bean所依赖的Bean。指定的任何bean都是 保证在此bean之前由容器创建。用过的 在bean没有明确依赖的情况下很少发生 另一个是通过属性或构造函数参数,而是 取决于另一个bean的初始化的副作用。
可以在任何直接或间接使用Component或注释的类上使用 关于使用Bean注释的方法。