2016-12-01 14 views
1

私はQuartzを使用するタイマーアプリケーションを作成しています。また、springを使用してschema.sqlファイルから自分のDBを初期化しています。アプリケーションが起動すると、Scheduler Beanが作成される前にDBを初期化します。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; 
} 

スケジューラビーン

@SpringBootApplication
@import({TimerConfiguration.class})
パブリッククラスTimerApplication {

ようTimerApplicationに添加されTimerConfiguration.java内部にあります

これを達成する方法はありますか?

+1

「@ PostConstruct」と「@ DependsOn」はあなたを助けることができると思います – Patrick

答えて

2

注釈は、別のBeanを初期化した後に初期化する必要があるBeanを指定します。

待機中のBeanの名前を注釈の値として設定することをお勧めします。

あなたの場合は@DependsOn("datasource")です。ドキュメントから

詳細に関する情報:現在のBeanが依存する

豆。指定されたBeanは、このBeanの前にコンテナによって作成されることが保証されている です。 Beanが明示的に を介して別のプロパティまたはコンストラクタ引数に依存していない場合は を使用することはあまりありませんが、 は別のBeanの初期化の副作用に依存します。

Beanでアノテーションされたメソッドで、Componentまたは に直接的または間接的に注釈を付けたクラスで使用できます。

関連する問題