如何在春季按配置文件启用@Scheduled作业?
2022-09-03 05:21:40
如何仅在特定配置文件中启用计划作业?
伪代码:
@Scheduled(cron = "${job.cron}")
@Profile("prod")
public void runJob() {
}
这可能吗?
如何仅在特定配置文件中启用计划作业?
伪代码:
@Scheduled(cron = "${job.cron}")
@Profile("prod")
public void runJob() {
}
这可能吗?
每个配置文件应该有一个 Bean:
@Component
@Profile("prod")
public class ProdJob {
@Scheduled(cron = "${job.cron}")
public void runJob() {
}
}
@Component
@Profile("beta")
public class BetaJob {
@Scheduled(cron = "${job.cron}")
public void runJob() {
}
}
您可以使用以下方法执行此操作。几乎就像您已经做过的那样,但是添加冒号,然后添加默认值,如果未找到属性,则应选择该值。在这里,我们使用'-'作为cron禁用表达式:
@Scheduled(cron = "${job.cron:-}")
public void runJob() {
}
然后在所需的配置文件中定义 cron 表达式(例如,使用属性文件)。
下面是 application-prod.properties 的内容:
job.cron=*/30 * * * * *
在这里,对于prod profile,它将每30秒启动一次,对于所有其他配置文件,它将关闭。