メソッド(run()など)に@Scheduled(fixedDelay = 1000)を持つクラスがあるユースケースがあります。
私はできるようにしたい:
- 異なる Bean 名を使用して、実行時にこのクラスの新しいインスタンスを (シングルトン スコープで) 起動します。
- 実行時に (Bean 名に基づいて) インスタンスを選択的に終了します。
- インスタンスの実行を一時停止します (Bean 名に基づく)。
- (Bean 名に基づいて) 以前に一時停止されたインスタンスの実行を再開します。
このようなシングルトンを起動/終了するには、BeanDefinitionRegistry の registerBeanDefinition および removeBeanDefinition メソッドをそれぞれ使用できます。
質問:
- registerBeanDefinition の後、登録された Bean は @Scheduled アノテーションでマークされたメソッドを実行しますか?
- removeBeanDefinition の後、削除されたインスタンスは @Scheduled アノテーションでマークされたメソッドの実行を停止しますか?
- @Scheduled アノテーションでマークされたメソッドの実行を一時停止および再開する最良の方法は何ですか? フラグを true に設定し、ビジー状態で一時停止するメソッドをいつでも公開できますが、使用できるコンテナーによって提供されるエレガントな方法や機能はありますか?