web-dev-qa-db-ja.com

Spring Boot @Scheduled cron

Springの_@Scheduled_ cron構成のpropertyClassからゲッター(または変数)を呼び出す方法はありますか?以下はコンパイルされません:

@Scheduled(cron = propertyClass.getCronProperty())または@Scheduled(cron = variable)

プロパティを直接取得することは避けたいと思います。

_@Scheduled(cron = "${cron.scheduling}")
_
12
ltalhouarne

簡単な答え-箱から出してそれは不可能です。

@Scheduledアノテーションで「cron式」として渡された値は、ScheduledAnnotationBeanPostProcessorインターフェイスのインスタンスを使用してStringValueResolverクラスで処理されます。

StringValueResolverには、すぐに使用できる3つの実装があります-Placeholder(たとえば、$ {})、Embedded値、およびStatic文字列のいずれもできませんあなたが探しているものを達成します。

アノテーションでプロパティプレースホルダーを使用することを絶対に避けなければならない場合は、アノテーションを取り除き、すべてをプログラムで構築してください。 ScheduledTaskRegistrarを使用してタスクを登録できます。これは、@Scheduledアノテーションが実際に行うことです。

動作し、テストに合格する最も単純なソリューションを使用することをお勧めします。

9
hovanessyan