SpringBoot简单的定时任务配置
-
在SpringBoot启动类xxxApplication,类上增加注解**@EnableScheduling** 启用定时任务
@EnableScheduling @SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } }
-
写定时任务的方法类,类上增加注解**@Component** 这样Spring会把这个Bean放到IOC容器中管理。
定时任务方法上,需要加上**@Sheduled**注解,这个注解标记一个要被调度的方法。该注解配合 cron、fixedDelay 或 fixedRate 其中之一使用
然后调用或者执行该类就可以进行测试了
@Component public class TestTask { // 此处定义了该任务将每隔3秒执行一次 @Scheduled(fixedRate = 3000) public void TestTask() { System.out.println("定时任务TestTask开始执行,时间:" + new Date()); // 执行业务代码 } }
关于cron、fixedDelay 或 fixedRate 属性:
fixedRate:
如果业务代码执行时间小于定时任务间隔时间,那么定时任务每3秒执行一次,且不受业务代码影响,无论业务代码执行多久,定时任务都是3秒执行一次;
但如果业务代码执行时间大于定时任务间隔时间,则定时任务循环执行。也就是说,如果业务代码执行花了5秒,那么5秒过后,会马上开始新一轮定时任务,不断这样循环执行。
fixedDelay:
这个属性在源码的解释翻译是:在最后一次调用结束和下一次调用开始之间的固定时间段后执行带注释的方法。
也就是说:即使业务代码执行时间比定时任务指定执行时间更长,定时任务都会等业务代码执行完成后重新再开启新一轮定时。
cron:
此属性通过 cron 表达式定义规则。比如有这样的表达式0 0/30 9-17 * * ? ,这表达式表示:朝九晚五工作时间内每半小时执行一次指定的定时任务。
这个cron属性非常灵活强大,可以搜在线cron,然后根据需要进行需要的配置。