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

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 * * ?


代码如下:

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

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

}


当然也可以单独写一个配置文件配置此项,也可以自定义文件路径,在@PropertySource注解中加入file来获取自定义文件即可。

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

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



内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://bjspace.net/post/77

相关推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 抛媚眼 调皮 鄙视 示爱 哭 开心 偷笑 嘘 奸笑 委屈 抱抱 Dog 大兵 威武

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!