- 起因
近日,在项目中因为一个需求要在规律时间类对数据库中的一个业务逻辑表进行定时任务处理,到了规定时间内,需要将其中的一个字段的状态改掉,所有想到了定时任务。
开始想到的是用pgAdmin中的pgAgent ,主要用于PostgreSQL的作业调度代理,能够在复杂的时间表上运行多步批处理shell和SQL任务。但是想到最好还是在代码上做处理比较好一点,于是研究了下springboot中的定时任务。
因为系统中的定时任务不多,所以用到了
串行方式
使用的注解: @Scheduled
我们先来研究下 @Scheduled 这个注解
-
@Scheduled注解
-
@scheduled注解用来配置到方法上来完成对应的定时任务的配置,如执行时间,间隔时间,延迟时间等等。
-
cron表达式详解:
-
当用到 @Scheduled注解时,我们将要配置定时刷新的时间值,cron写执行的时机.
1 秒(0~59)
2 分钟(0~59)
3 小时(0~23)
4 天(0~31)
5 月(0~11)
6 星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
7.年份(1970-2099) -
比如"0 0 12 * * ?" 每天中午十二点触发
-
在举例
-
0 0 10 ? * MON-FRI" 每周一,二,三,四,五的10点触发
-
实现方式
-
定义一个接口,并实现该接口
一个简单的demo
ItestService类没有什么东西就不帖出来了
@Component
public class testServiceimpl implements ItestService {
// 每分钟启动
@Scheduled(cron = "0 0 12 * * ?")
public void timerToNow(){
System.out.println("定时任务执行了")。
}
}
一个简单的demo就完成了。