毎日07:00に実行する必要があるメソッドがあります。さらに言えば、メソッドを使用して Bean を作成し、注釈を付けました@Scheduled(cron="0 0 7 * * ?")
。この Bean で、次のように、Springmain
コンテキストを初期化し、Bean を取得し、メソッドを呼び出します (少なくとも初めて) 関数を作成しました。
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(args[0]);
SchedulerService schedulerService = context.getBean(SchedulerService.class);
schedulerService.myMethod();
}
これは問題なく動作しますが、一度だけです。私はその理由を理解していると思います-それはmain
スレッドが終了するためです-そして春のコンテキストもそうであるため、myMethod
注釈が付けられていても機能しません@Scheduled
。
main
私はこれを渡す方法を考えました-つまり、おそらく次のように、スレッドを死なせないでください:
while (true){
Thread.currentThread().sleep(500);
}
それが、アプリケーションコンテキストが残り、私のBeanもそうであると私が思う方法です。
私は正しいですか?
これを解決するより良い方法はありますか?
春の 3.1.2 を使用しています。
ありがとう。