2

我正在创建一个使用 Quartz 的计时器应用程序,也正在使用 spring 从 schema.sql 文件初始化我的数据库。当应用程序启动时,我希望在创建调度程序 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;
}

调度程序 bean 在 TimerConfiguration.java 中,它被添加到 TimerApplication 中

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

有没有办法做到这一点?

4

1 回答 1

4

注释指定了一个 bean ,@DependsOn它应该在另一个 bean 被初始化后被初始化。

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

在你的情况下,它的@DependsOn("datasource").

来自文档的更多信息:

当前 bean 所依赖的 bean。任何指定的 bean 都保证由容器在此 bean 之前创建。在 bean 不通过属性或构造函数参数显式依赖另一个 bean 而是依赖于另一个 bean 初始化的副作用的情况下很少使用。

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

于 2016-12-01T09:49:25.663 回答