SpringBoot中定时任务使用配置文件配置执行时间

本文介绍了如何在SpringBoot中通过配置文件来设置定时任务的执行时间,以解决在生产环境中方便修改任务执行间隔的问题。传统Spring Task通常在方法上直接使用cron注解,但这种方式不利于后期调整。在SpringBoot的application.properties文件中添加相应的cron表达式,并通过@ConfigurationProperties绑定,可以将执行时间从代码中分离出来。需要注意的是,SpringBoot的定时任务默认是串行执行的,如果需要并行任务,可能需要采取其他策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot中定时任务使用配置文件配置执行时间

在传统的Spring项目中使用Spring Task设置定时任务,其执行时间配置到applicationContext.xml中指定执行方法即可;但是由于现在换做了SpringBoot框架,虽然Spring Task是集成在SpringBoot中的,但是大多是用注解直接把执行之间cron声明在了方法名上,这样不利于生产环境修改执行时间(PS:有尝试使用@Value取值后使用,未果所以换方式)

原spring Task写法:

@Scheduled(cron = "0 0 0/1 * * ?")
	public void queryPayStatus() {
		logger.info("执行定时任务queryPayStatus---start");
		logger.info("执行定时任务queryPayStatus---end");
	}

按上述方法模板就创建了一个定时任务的执行方法,cron = "0 0 0/1 * * ?"表时一小时执行一次,具体时间可参考cron表达式。

问题是,我现在想把执行时间放到配置文件中该怎么弄呢?

在application.properties中配置:

custom.cron=0 0 0/1 * * ?

代码如下:
其中 @PropertySource(value="classpath:application.properties",ignoreResourceNotFound=true)
用于spring项目如果你是springboot项目则不用加此注解

@Component
@PropertySource(value="classpath:application.properties",ignoreResourceNotFound=true)
public class AlarmJob {

	@Scheduled(cron="${custom.cron}")
	public void fetch() {
		System.err.println("开始执行");
	}

}

注意:springboot对应的定时任务是串行的,如果复杂并行的定时任务不满足。

若需要,请参考 SpringBoot定时任务的几种实现方式 中的多线程执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值