spring boot 定时器task
项目结构
创建定时任务类
package com.example.sbtask.task;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
@Controller
public class TimeTask {
@Scheduled(cron="0/5 * * * * ?")
public void timeRemark() {
System.out.println("你真美"+new Date().getTime()/1000);
}
}
编写启动器类
package com.example.sbtask;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling// 开启定时任务功能
public class SbtaskApplication {
public static void main(String[] args) {
SpringApplication.run(SbtaskApplication.class, args);
}
}
运行启动器
task的一些配置
字段 |
允许值 |
允许特殊字符 |
秒 |
0-59 |
, - * / |
分 |
0-59 |
, - * / |
小时 |
0-23 |
, - * / |
日期 |
1-31 |
, - * ? / L W C |
月份 |
1-12或JAN-DEC |
, - * / |
星期 |
1-7或SUN-SAT |
, - * ? / L C # |
年(可选) |
留空,1970-2099 |
, - * / |
注意:- 指的是区间
* 通配符
?不想设置的字段
CRON表达式
CRON表达式 |
含义 |
0 0 12 * * ? |
每天中午12点触发 |
0 15 10 ? * * |
每天上午10点15触发 |
0 15 10 * * 2019 |
2019年每天10点15分触发 |
0 * 14 * * ? |
每天下午2点到2点59分每一分钟触发一次 |
0 0/5 14 * * ? |
每天下午2点到2点55分结束,每5分钟触发一次 |
0 0/5 14,18 * * ? |
每天下午2点到2:55和6点到6:55,每5分钟触发一次 |
0 0-5 14 * * ? |
每天下午2点到2:05,每一分钟触发一次 |
0 10,44 14 ? 3 WED |
三月每周三下午2:10分和下午2:44触发 |
0 15 10 ? * MON-FRI |
每个工作日10点15触发 |
也可以在这里看cron表达式总结
https://blog.csdn.net/qq_43560721/article/details/104801797
配置时注意:
- 启动器类上要加@EnableScheduling注解
- 定时任务类上要加@Controller注解
- 类中的方法上要加@Scheduled注解
CronTrigger配置的完整格式如下:
秒,分,时,日,月,周,年。其中年可以为空,其它的不能为空
* 表示所有的值,例如在分的字段上设置*,表示每一分钟都会触发
? 表示不指定值,比如我们设置了月份,而不关心周的字段,那么我们就可以使用?表示。
- 表示区间。如在月份上设置1-2,指的是1,2月份都会触发。
, 表示多个值,如在月上设置1,3,5,6,指的是1,3,5,6月份都会触发。
/ 用于递增触发,如在秒上设置5/15,则表示从5秒开始,每间隔15秒触发一次,相当于(5,20,35,50)
L 表示最后的意思,在日字段上加上L,表示当前的最后一天触发,如果加上数据,如7L,则表示,当月最后一个周日触发。
W 表示离指定日期的最近那个工作日(周一到周五),例如在日字段上加上10W,则表示离10号最近的工作日触发,如果10号是周六,则9号触发,如果10号是周日,则11号触发,如果10号正确是在工作日内,则当前触发。
# 序号(表示每月的第几个周几),例如:在周字段上设置5#3,则表示第三周的周五触发。如果设置成#5,则表示第五周的周六触发,如果没有,则不执行。
L和W是可以同时使用的,如果在日字段上设置LW,则表示当月的最后一个工作日执行。
下一篇: 2020前端面试题总结
推荐阅读
-
干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结
-
Spring Boot 2 - 初识与新工程的创建
-
九、Spring Boot 优雅的实现CORS跨域
-
spring Boot环境下dubbo+zookeeper的一个基础讲解与示例
-
spring boot 2 全局统一返回RESTful风格数据、统一异常处理
-
在 Spring Boot 项目中使用 activiti
-
Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析
-
spring boot2 修改默认json解析器Jackson为fastjson
-
Spring Boot 2 + Thymeleaf:表单字段绑定、表单提交处理
-
Spring Boot 配置元数据指南