现实开发中,可能会经常使用到定时任务,也有可能会使用不到,在最近的项目开发中,我就使用到了定时任务,那么接下来我来总结一下我所使用的定时任务吧。
项目呢使用的是基本框架也就是SpringBoot+MybatisPlus,那么所使用的定时任务呢也就是SpringBoot自带的定时任务。
万事开头第一步,导入maven包,在最外层的pom.xml中导入如下代码:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<!-- SpringBoot 核心组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
那么由于是SpringBoot项目所以需要写一个Boot的启动类,在启动类上加入 @EnableScheduling 这样一个注解,进行全局的扫描,至于启动类上其余的注解就不一一赘述的哈。
接下来建立一个新的Job类(也就是一个普通的类),在类上面加入@Compant注解以及@Slf4j的注解,前者是方便上述注解能够扫描到当前的定时任务类,后者则是需要打印定时任务启动任务时需要的日志的。
接下来就可以继续写你的业余方法,但是需要在任务方法上写上一个注解 @Scheduled(cron="0 1 0 * * ?"),这个注解是告诉服务器我这个东西什么时候调用,关于这个注解里面的时间怎么填写,接下来会有一个详细的解释。
0 0 1 * * ? 每天1点执行
0 1 0 * * ? 每天零点1分执行一次
0 5/10 1 * * ? 每天1点的5分,15分,25分,35分,45分,55分这几个时间点执行
0 10 1 ? * 1 每周星期天,1点10分执行,1表示的事周天
0 10 1 ?* 1#3 每个月的第三个星期的星期天执行 #号只能出现在星期的位置
那么整个一个定时任务的大的框架就有了,接下来就是自己往业务方法里面写出自己的业务实现逻辑了。