https://blog.csdn.net/_/article/details/
什么时候要用到定时任务
1) 要求在一个特定的时间给用户发送一个信息
2) 或者是规定的时间对redis缓存的数据进行一个清除
解决方案二:
1) Scheduled(死该久)定时任务器 ——>简单
2) 整合Quartz(Q只)定时任务框架 ——>复杂
一、 scheduled

讯享网
0/2是从0开始每隔两秒的意思
2 的话就是每分钟的第2秒触发
下面是允许值,只能在允许值范围内否则会报错

以下一个星号的月份是闰月,表示只有在有31号的月份的下午6点50分3秒执行定时器

然后如果你填了个2的话就会报错

星期的话是从周日表示1然后4的话其实是星期3,这表示2月份的每周3下午6点50分3秒触发定时器,加个?表示占位舍弃这个判定。因为如果2月的周3不在这个日的话也会报错



二、 Quartz的介绍和Quartz的使用思路
2.1、Quartz的介绍

2.2 使用思路
1)job – 任务 – 你要做什么事?
2)Trigger – 触发器 – 你什么时候去做?
3)scheduled – 任务调度 – 你什么时候需要去做什么事?
2.3 普通项目使用quartz

添加pom依赖

1)创建job类

Trigger
方法
Repeathourlyforever()每小时执行一次
Repeathourlyforever(int hours)每hours时执行一次
RepeatHourlyfortotalcount(int count)每小时执行一次,一共count次
RepeatHourlyfortotalcount(int count,int hours)每hours时执行一次,一共执行count次
RepeatSecondlyforever()每秒执行一次
2)创建测试类




3)执行:

1)用cron表达式来做
改trigger这里就行,每两秒执行以下

三、 springboot整合quartz定时框架
3.1)修改pom文件添加依赖
<!-- Quartz坐标--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> <exclusions> <exclusion> <artifactId>s1f4j-apik</artifactId> <groupId>org. slf4j</groupId> </exclusion> </exclusions> </dependency> <!--添加Scheduled坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <!-- Sprng tx坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency>
讯享网
Spring tx做事务的依赖
3.2)编写任务类

3.3)编写配置类


简单的trigge


启动


给的是重复5次所以一共是6次每个两秒
用cron Trigger

修改scheduler


四、 任务类(job)中如何完成一些其他类的注入


然后我们运行之后报了一个空指针异常

报空指针表示userservice没有注入进来
原因:创建对象是使用反射创建的,被注入的对象任务类没有注入spring所以注入失败
注入:要求注入对象和被注入对象都在spring的ioc容器中


解决方法:


然后在scheduler方法上加一个参数,再注入工厂



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74804.html