SpringBoot的整合(一、定时任务task)
SpringBoot整合定时任务task非常的简单,共分为以下三步:
1. 在启动类加上@EnableScheduling注解
2. 在controller的类上加上@Component注解
3. 在controller的方法上加上@Scheduled注解即可
之后启动程序,就会自动开始执行任务了
SpringBoot整合定时任务task
启动类代码
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication //开启定时任务 @EnableScheduling public class DemoApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
controller代码
@Component public class cronjobscontroller { private static final SimpleDateFormat dataFormat = new SimpleDateFormat("HH:mm:ss"); //每隔三秒执行一次任务 @Scheduled(fixedRate = 3000) public void cronJobs(){ System.out.println("时间为:"+dataFormat.format(new Date())); } }
控制台效果
SpringBoot定时任务Cron确定定时规则的方法
在线cron表达式生成器地址:http://cron.qqe2.com/
注意:这里要注意,这个工具 '年' 是不支持的。cron位数严格要求为6位。
在上面的例子中我们是使用@Scheduled(fixedRate = 3000)的方式,意思为每三秒执行一次。那么cron更为强大,它的使用方式如下:
比如:我现在想要每过1秒执行一次,那么配置如下
下面列举一些常用的cron:
1秒执行一次:0/1 * * * * ?
1分钟执行一次:0 */1 * * * ?
1小时执行一次:0 0 0/1 * * ?
0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天下午的 2点到2点59分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发 (特殊情况,在一个时间设置里,执行两次或 两次以上的情况)
0 59 2 ? * FRI 每周5凌晨2点59分触发;
0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
0 15 10 15 * ? 每月15号上午10点15分触发
0 15 10 L * ? 每月最后一天的10点15分触发
0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天下午的 2点到2点59分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发 (特殊情况,在一个时间设置里,执行两次或 两次以上的情况)
0 59 2 ? * FRI 每周5凌晨2点59分触发;
0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
0 15 10 15 * ? 每月15号上午10点15分触发
0 15 10 L * ? 每月最后一天的10点15分触发
0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)
参考:
1. 慕课网视频
持续更新!!!