springboot--定时器
Posted xuemeng11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot--定时器相关的知识,希望对你有一定的参考价值。
1、启动类加上注解 @EnableScheduling
2、导入jar包
<!-- druid 连接池配置-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
3、创建定时器业务类
package com.ccc.demoboot.task; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @Component @Transactional public class lx implements Runnable{ private Log logger=LogFactory.getLog(lx.class); @Override public void run() { System.out.println("定时器任务1"); logger.info("任务一执行成功"); } }
4、创建定时配置类
package com.ccc.demoboot.conf; import com.ccc.demoboot.task.lx; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import java.util.concurrent.ThreadPoolExecutor; @Configuration public class TaskConf implements SchedulingConfigurer { @Value("${lx.cron}") private String lxScon; @Autowired private lx lxTask; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.setTaskScheduler(getTaskScheduler()); scheduledTaskRegistrar.addCronTask(lxTask,lxScon); } @Bean public TaskScheduler getTaskScheduler(){ //创建定时任务调度线程池 ThreadPoolTaskScheduler taskScheduler=new ThreadPoolTaskScheduler(); //设置线程名称前缀 taskScheduler.setThreadNamePrefix("定时任务"); //设置线程池大小,根据任务来确定 taskScheduler.setPoolSize(10); //线程关闭最大等待时间 taskScheduler.setAwaitTerminationSeconds(60); //线程关闭时等待所有任务完成 taskScheduler.setWaitForTasksToCompleteOnShutdown(true); // 任务丢弃策略 taskScheduler.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); return taskScheduler; } }
5、在yml中进行配置
lx: #cron: 0 0 0 1/1 * ? #每隔1天执行一次 cron: 0 */1 * * * ? #每隔1分钟执行一次 #cron: 0 0 0/1 * * ? #每隔1小时执行一次
以上是关于springboot--定时器的主要内容,如果未能解决你的问题,请参考以下文章
全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段
springboot项目使用SchedulingConfigurer实现多个定时任务