Spring boot 中定时任务,以及自动配置执行时间!

      最近项目中一些外部接口需要定时扫描表中数据,定时发送,由于项目框架是springboot的,故首先考虑使用spring内部配置实现定时任务,主要考虑到方便快捷。查看资料也发现可以使用quartz+springboot的形式,由于时间原因,直接使用springboot注解形式来实现。

步骤如下:

1、首先springboot启动类中添加注解:@EnableScheduling ,允许使用定时任务;

2、创建定时任务实现类:

@Component
public class PayJobs {
	

	private static final Logger logger = Logger.getLogger(PayJobs.class);

	public final static long ONE_Minute = 60 * 1000;

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

}

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

但是问题来了,如果想把执行时间放到配置文件中该怎么弄呢?

首先想到的是下述方式:

        @Value("${paramInfo}")

private String paramInfo;

在application.properties中添加配置参数paramInfo,以上述方式获取,但是发现cron表达式获取不到,或者获取到的无法注解到方法头上面;那又该如何解决呢?查资料发现可以采取如下方式:


@Component
@PropertySource(value = {"classpath:/param.properties","file:${user.dir}/config/param.properties"},ignoreResourceNotFound=true)
public class TaacCertDelayTaskJob {
	
	private static final Logger logger = Logger.getLogger(TaacCertDelayTaskJob.class);
	
	@Scheduled(cron = "${cronTaacCertDelayTaskJob}")
	private void TaacCertDelay() throws ParseException {
		
	}
}

单独创建一个配置文件param.properties,添加配置参数cronTaacCertDelayTaskJob,然后把配置文件注解到类中(@PropertySource),上述方法中前者注解value值对应的本地,后者对应是linux服务器部署环境对应的配置文件;其实也可以单独去写方法加载上述的配置文件,不需要用注解的方式,但考虑注解方式较为方便,所有采用。

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

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值