ApplicationListenerを実装し、メソッド:onApplicationEvent(ContextRefreshedEventイベント)をオーバーライドして、StartupListenerを作成しました。Springブートcron式のスケジューリング、ApplicationListenerのonApplicationEventの呼び出し
このメソッドでは、fileに対応するブール値がtrueであるかどうかに基づいて、いくつかのファイルを作成しようとしています。
このブール値は、@ valueアノテーションを使用して "application.properties"ファイルから読み取られています。
このStartupListenerは正常に動作します。
今、私は、私は私のメインクラスファイルに@EnableScheduling追加、および方法を使用して新しいJavaファイルを作成し、それらをスケジュールすることにより、これらのファイルを生成したい:
@Component
public class FileGenerationScheduler {
@Autowired
StartupListener startupListener;
@Scheduled(cron = "${file.gen.cron}")
public void generateFileWithCron() {
startupListener.onApplicationEvent(null); //passing null here
}
}
このメソッドは、指定した上で呼び出されますすべての@Valueブール値は "application.properties"から読み取られません。だから、デフォルトでは、これらの値はfalseになります(インスタンス変数)
@Value("${create.file.some.merchant}")
private boolean createMerchantAFile;
これはStartupListener中に存在し、今ではfalseです。だから何も作られていない。
スケジューラ経由で呼び出された場合でも、これらの値がapplication.propから読み取られるようにするにはどうすればよいですか?