<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
package com.hailan.hailan.quartz;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import java.time.LocalDateTime;
@Configuration
@EnableScheduling //开启任务调度
public class SimpleJob {
@Scheduled(cron = "0/1 * * * * ?")
public void run(){
//任务
System.out.println(LocalDateTime.now());
}
}
package com.hailan.hailan.quartz;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hailan.hailan.entity.Cron;
import com.hailan.hailan.service.CronService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Configuration
@EnableScheduling //开启任务调度
public class ComplexJob implements SchedulingConfigurer {
@Autowired
private CronService CronService;
//任务触发器
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
//1.8新特性 写法 lambada
scheduledTaskRegistrar.addTriggerTask(
() -> System.err.println(LocalDateTime.now()),
triggerContext -> {
Cron byId = CronService.getById(1);
String cron = byId.getCron();
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
// scheduledTaskRegistrar.addTriggerTask(new Runnable() {
// @Override
// public void run() {
// //任务
// }
// }, new Trigger() {
// @Override
// public Date nextExecutionTime(TriggerContext triggerContext) {
// return null;
// }
// });
}
}
package com.hailan.hailan.quartz;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hailan.hailan.entity.Cron;
import com.hailan.hailan.entity.FileUpload;
import com.hailan.hailan.service.CronService;
import com.hailan.hailan.service.FileUploadService;
import com.hailan.hailan.util.OssUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Configuration
@EnableScheduling //开启任务调度
public class ComplexJob implements SchedulingConfigurer {
@Autowired
private CronService CronService;
@Autowired
private FileUploadService fileUploadService;
@Autowired
OssUtil ossUtil; //注入OssUtil
private static List<FileUpload> list;
private static boolean b = false;
//任务触发器
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
//1.8新特性 写法 lambada
scheduledTaskRegistrar.addTriggerTask(
() -> {
// System.out.println("==============1111111111111====================");
list = fileUploadService.list();
// System.out.println(list);
},
triggerContext -> {
Cron byId = CronService.getById(3); //一小时查询迭代一次
String cron = byId.getCron();
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
scheduledTaskRegistrar.addTriggerTask(
() -> {
// System.out.println("==============2222222222222222222====================");
// System.out.println(list);
if(list!=null){
for (int i = 0; i<list.size();i++){
// System.out.println("==============333333333333333333333333====================");
//System.out.println(list.get(i));
String a = list.get(i).getFileDate();
Date date1 = DateUtil.parse(a);
Date date2 = DateUtil.offset(DateUtil.parse(DateUtil.now()), DateField.DAY_OF_MONTH, -2);
if(date1.getTime()<date2.getTime()){
ossUtil.deleteObject(list.get(i).getFileUrl());
fileUploadService.removeById(list.get(i).getFileId());
list.remove(i);
i--;
// System.out.println("==============444444444444444444444444444444444====================");
// System.out.println(list);
}
}
}
if(!b){
b=true;
// System.out.println("===========5555555555555555555555555555555555555====================");
list = fileUploadService.list();
}
},
triggerContext -> {
Cron byId = CronService.getById(4); //一分钟清理一下数据
String cron = byId.getCron();
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
// scheduledTaskRegistrar.addTriggerTask(new Runnable() {
// @Override
// public void run() {
// //任务
// }
// }, new Trigger() {
// @Override
// public Date nextExecutionTime(TriggerContext triggerContext) {
// return null;
// }
// });
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hailan</groupId>
<artifactId>hailan</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hailan</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!-- framework: mybatis-plus代码生成需要一个模板引擎 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!--mp代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- hutool工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.3</version>
</dependency>
<!--阿里云OSS -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.hailan.hailan.HailanApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
package com.hailan.hailan.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
*
*
*
*
* @author 深林中的书海
* @since 2021-02-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Cron implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "corn_id", type = IdType.AUTO)
private Integer cornId;
private String cron;
}
package com.hailan.hailan.mapper;
import com.hailan.hailan.entity.Cron;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
*
* Mapper 接口
*
*
* @author 深林中的书海
* @since 2021-02-22
*/
public interface CronMapper extends BaseMapper<Cron> {
}
package com.hailan.hailan.service;
import com.hailan.hailan.entity.Cron;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* 服务类
*
*
* @author 深林中的书海
* @since 2021-02-22
*/
public interface CronService extends IService<Cron> {
}
package com.hailan.hailan.service.impl;
import com.hailan.hailan.entity.Cron;
import com.hailan.hailan.mapper.CronMapper;
import com.hailan.hailan.service.CronService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
*
* 服务实现类
*
*
* @author 深林中的书海
* @since 2021-02-22
*/
@Service
public class CronServiceImpl extends ServiceImpl<CronMapper, Cron> implements CronService {
}
SimpleJob 使用单个定时器
package com.hailan.hailan.quartz;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import java.time.LocalDateTime;
import java.util.Date;
@Configuration
@EnableScheduling //开启任务调度
public class SimpleJob {
@Scheduled(cron = "0/1 * * * * ?")
public void run(){
//任务
System.out.println(LocalDateTime.now());
}
/*public static void main(String[] args) {
String a = "2021-01-22 16:06:28";
String b = DateUtil.now();
Date date1 = DateUtil.parse(a);
Date date2 = DateUtil.parse(b);
System.out.println(a);
System.out.println(b);
System.out.println(date1);
System.out.println(date2);
Date newDate = DateUtil.offset(date2, DateField.DAY_OF_MONTH, -2);
System.out.println(newDate);
System.out.println(date1.getTime()
}
ComplexJob同时使用多个定时器
package com.hailan.hailan.quartz;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hailan.hailan.entity.Cron;
import com.hailan.hailan.entity.FileUpload;
import com.hailan.hailan.service.CronService;
import com.hailan.hailan.service.FileUploadService;
import com.hailan.hailan.util.OssUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Configuration
@EnableScheduling //开启任务调度
public class ComplexJob implements SchedulingConfigurer {
@Autowired
private CronService CronService;
@Autowired
private FileUploadService fileUploadService;
@Autowired
OssUtil ossUtil; //注入OssUtil
private static List<FileUpload> list;
private static boolean b = false;
//任务触发器
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
//1.8新特性 写法 lambada
scheduledTaskRegistrar.addTriggerTask(
() -> {
// System.out.println("==============1111111111111====================");
list = fileUploadService.list();
// System.out.println(list);
},
triggerContext -> {
Cron byId = CronService.getById(3); //一小时查询迭代一次
String cron = byId.getCron();
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
scheduledTaskRegistrar.addTriggerTask(
() -> {
// System.out.println("==============2222222222222222222====================");
// System.out.println(list);
if(list!=null){
for (int i = 0; i<list.size();i++){
// System.out.println("==============333333333333333333333333====================");
//System.out.println(list.get(i));
String a = list.get(i).getFileDate();
Date date1 = DateUtil.parse(a);
Date date2 = DateUtil.offset(DateUtil.parse(DateUtil.now()), DateField.DAY_OF_MONTH, -2);
if(date1.getTime()<date2.getTime()){
ossUtil.deleteObject(list.get(i).getFileUrl());
fileUploadService.removeById(list.get(i).getFileId());
list.remove(i);
i--;
// System.out.println("==============444444444444444444444444444444444====================");
// System.out.println(list);
}
}
}
if(!b){
b=true;
// System.out.println("===========5555555555555555555555555555555555555====================");
list = fileUploadService.list();
}
},
triggerContext -> {
Cron byId = CronService.getById(4); //一分钟清理一下数据
String cron = byId.getCron();
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
// scheduledTaskRegistrar.addTriggerTask(new Runnable() {
// @Override
// public void run() {
// //任务
// }
// }, new Trigger() {
// @Override
// public Date nextExecutionTime(TriggerContext triggerContext) {
// return null;
// }
// });
}
}