[解決済み] Springでスケジュールされたジョブを条件付きで有効または無効にするには?
2023-05-14 19:32:27
質問
Springでcronスタイルのパターンでスケジュールされたジョブを定義しています。
@Scheduled
アノテーションを使用しています。
cronパターンはconfigプロパティファイルに格納されています。1つはデフォルトの設定、もう1つは環境に依存し(dev, test, prod customer 1, prod customer 2など)、デフォルト値をオーバーライドするプロファイルの設定ファイルです。
Spring コンテキストでプロパティプレースホルダービーンを構成し、これによって
${}
スタイルのプレースホルダを使用して、プロパティファイルから値をインポートすることができます。
ジョブビーンズはこのような感じです。
@Component
public class ImagesPurgeJob implements Job {
private Logger logger = Logger.getLogger(this.getClass());
@Override
@Transactional(readOnly=true)
@Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}")
public void execute() {
//Do something
//can use DAO or other autowired beans here
}
}
私のコンテキストXMLの関連する部分 :
<!-- Enable configuration of scheduled tasks via annotations -->
<task:annotation-driven/>
<!-- Load configuration files and allow '${}' style placeholders -->
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config/default-config.properties</value>
<value>classpath:config/environment-config.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" value="false"/>
</bean>
私はこれがとても気に入っています。最小限のXMLで非常にシンプルかつクリーンです。
しかし、私はもう1つ要求があります。これらの仕事のいくつかは、場合によっては完全に無効にすることができます。
そこで、Springを使用してそれらを管理する前に、私はそれらを手動で作成し、設定ファイルのcronパラメータと一緒にbooleanパラメータがあり、ジョブが有効でなければならないかどうかを指定するようにしました。
jobs.mediafiles.imagesPurgeJob.enable=true or false
jobs.mediafiles.imagesPurgeJob.schedule=0 0 0/12 * * ?
Springでこのパラメータを使用して、この設定パラメータに応じて条件付きでBeanを作成したり、単に無視したりするにはどうしたらよいでしょうか。
1つの明白な回避策は、決して評価されないcronパターンを定義することで、ジョブが実行されることはありません。しかし、ビーンはまだ作成され、構成は少し不明瞭になるので、私はより良い解決策があるはずだと感じています。
どのように解決するのですか?
@Component
public class ImagesPurgeJob implements Job {
private Logger logger = Logger.getLogger(this.getClass());
@Value("${jobs.mediafiles.imagesPurgeJob.enable}")
private boolean imagesPurgeJobEnable;
@Override
@Transactional(readOnly=true)
@Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}")
public void execute() {
//Do something
//can use DAO or other autowired beans here
if(imagesPurgeJobEnable){
Do your conditional job here...
}
}
}
関連
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] Spring Bootアプリケーションにポートを設定する方法
-
[解決済み] 全ユーザーのcronジョブを一覧表示する方法を教えてください。
-
[解決済み] 同じインタフェースを実装する2つのビーンを自動配線する - 自動配線するデフォルトのビーンを設定する方法は?
-
[解決済み] Spring XMLでデフォルトのプロパティ値を指定する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
型に解決できない エラー解決
-
プロジェクトの依存関係を解決できない。
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
Uncaught ReferenceError: は定義されていません。
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
FindBugの使用概要
-
Zipファイルの圧縮・解凍にantを使用する
-
[解決済み] クオーツ 決して実行されないCron式