Spring Boot 实现定时任务
Spring Boot 要实现定时任务只要加 3 个注解就可以完成完成 只要分别在启动类,类,方法 加上@EnableScheduling @Component @Scheduled 这三个注解缺一个都不行1.在启动类加上 @EnableScheduling 注解2.在需要设置定时任务的类上加 @Component 注解3.在需要要执行定时任务的方法上加上 @Scheduled 注解效果图:...
·
Spring Boot 要实现定时任务只要加 3 个注解就可以完成完成 只要分别在启动类,类,方法 加上 @EnableScheduling @Component @Scheduled 这三个注解缺一个都不行
1.在启动类加上 @EnableScheduling 注解
@EnableScheduling //定时任务在启动类注解
@SpringBootApplication
public class PulsApplication {
public static void main(String[] args) {
SpringApplication.run(PulsApplication.class, args);
}
}
2.在需要设置定时任务的类上加 @Component 注解 ,在定时任务类里写需要执行的方法,然后在方法上加上 @Scheduled 注解并设置时间,这个方法就会在设定的时间里执行
@Component //定时任务在类上的注解
public class TimeTask {
/**
* initialDelay 第一次启动任务延迟时间(单位 毫秒)
* fixedRate 每次任务间隔时间 (单位 毫秒)
*/
@Scheduled(initialDelay = 1000,fixedRate = 3000) //定时任务在方法上的注解
public void timedA(){
System.out.println("A 小熊369 "+new Date());
}
/**
* cron 表达式 秒 分 时 天 月 年
* cron = "10 44 21 * * ?" 表示每天 21点 44分 10秒 开始执行
*/
@Scheduled(cron = "10 44 21 * * ?") //定时任务在方法上的注解
public void timedB(){
System.out.println("B 小熊369 "+new Date());
}
}
定时任务执行执行效果图:
@Scheduled 注解里一般设置时间有两种方式
- 一种是用 initialDelay 设置项目启动后延迟多少时间后执行和用 fixedRate 设置每次任务间隔时间,这种一般用于不需要准时准点时使用,例如每30分钟更新一下数据库,统计一下活跃数据等,如果有准时准点的要求用 cron 表达式会更好。
- cron 表达式 一般用于准时统计,例如每个月 1号生成上一个月的月报,或者是凌晨时统计前一天的数据。
cron 表达式在线自动生成工具,下面两个选一个点开即可使用
Cron表达式生成器 - Toolzl工具https://www.toolzl.com/tools/croncreate.html下面这个工具比上面的少了一个季节的选择
在线Cron表达式生成器通过这个生成器,您可以在线生成任务调度比如Quartz的Cron表达式,对Quartz Cron 表达式的可视化双向解析和生成.https://cron.qqe2.com/cron 表达式的使用示例
下面只是一些示例,要全面学习 可以去阿里云Cron表达式 - 云服务器 ECS - 阿里云
示例 | 说明 |
---|---|
0 15 10 ? * * | 每天上午10:15执行任务 |
0 15 10 * * ? | 每天上午10:15执行任务 |
0 0 12 * * ? | 每天中午12:00执行任务 |
0 0 10,14,16 * * ? | 每天上午10:00点、下午14:00以及下午16:00执行任务 |
0 0/30 9-17 * * ? | 每天上午09:00到下午17:00时间段内每隔半小时执行任务 |
0 * 14 * * ? | 每天下午14:00到下午14:59时间段内每隔1分钟执行任务 |
0 0-5 14 * * ? | 每天下午14:00到下午14:05时间段内每隔1分钟执行任务 |
0 0/5 14 * * ? | 每天下午14:00到下午14:55时间段内每隔5分钟执行任务 |
0 0/5 14,18 * * ? | 每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务 |
0 0 12 ? * WED | 每个星期三中午12:00执行任务 |
0 15 10 15 * ? | 每月15日上午10:15执行任务 |
0 15 10 L * ? | 每月最后一日上午10:15执行任务 |
0 15 10 ? * 6L | 每月最后一个星期六上午10:15执行任务 |
0 15 10 ? * 6#3 | 每月第三个星期六上午10:15执行任务 |
0 10,44 14 ? 3 WED | 每年3月的每个星期三下午14:10和14:44执行任务 |
更多推荐
已为社区贡献1条内容
所有评论(0)