1、配置pom文件,添加quartz依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
2、创建任务类
- 可以一个任务一个类,这里是用一个类以不同方法区分不同的任务
@Component
@EnableScheduling //开启对定时任务的支持
public class ScheduleTask implements Job {
private static final Logger logger = LoggerFactory.getLogger(ScheduleTask.class);
public void sendEmployeeNotice() {
logger.info("这是任务一");
// 具体任务逻辑
// ...
}
public void sendManagerNotice() {
logger.info("这是任务二");
// 具体任务逻辑
// ...
}
@Override
public void execute(JobExecutionContext jobExecutionContext) {
// 这里可以获取控制器绑定的值,实际应用中可以设置为某个活动的id,以便进行数据库操作
Object jobName = jobExecutionContext.getJobDetail().getKey();
logger.info("这是" + jobName + "任务" + new Date());
}
}
3、创建Quartz配置类,为任务配置jobDetail和trigger。
- 为了后期修改时间,这里需要为不同的任务配置不同的jobDetail和trigger
@Configuration
public class QuartzConfiguration {
// 配置定时任务1
@Bean(name = "firstJobDetail")
public MethodInvokingJobDetailFactoryBean firstJobDetail(ScheduleTask firstJob) {
MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
/*
* 是否并发执行
* 例如每5s执行一次任务,但是当前任务还没有执行完,就已经过了5s了,
* 如果此处为true,则下一个任务会执行,如果此处为false,则下一个任务会等待上一个任务执行完后,再开始