项目中需要页面动态新增定时任务,还需要进行任务删除的功能。
借鉴了其他人的做法。现将设计方式记录如下:
1、springboot项目直接依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2、在启动类上加@EnableScheduling
3、添加quartz配置文件quartz.properties
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
4、配置类
@Configuration
@Slf4j
public class QuartzThreadPoolConfig {
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Bean
@Order(2)
public SchedulerFactoryBean getSchedulerFactoryBean() throws IOException {
if(threadPoolTaskExecutor == null){
log.error("threadPoolTaskExecutor is null");
System.exit(0);
}
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/config/quartz.properties"));
//在quartz.properties中的属性被读取并注入后再初始化对象
propertiesFactoryBean.afterPropertiesSet();
//创建SchedulerFactoryBean
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setTaskExecutor(threadPoolTaskExecutor);
factory.setQuartzProperties(propertiesFactoryBean.getObject());
//这样当spring关闭时,会等待所有已经启动的quartz job结束后spring才能完全shut

本文介绍如何在SpringBoot项目中使用Quartz实现动态新增和删除定时任务的功能。通过依赖引入、配置文件设置、监听器和控制器等步骤,实现任务的灵活调度与管理。
最低0.47元/天 解锁文章
3万+





