我正在创建一个使用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注释的方法。