Spring Boot集成Quartz连接Oracle修改触发器类型后表数据未更新如何解决
Quartz配置变更自动同步解决方案
所需配置
默认Spring集成Quartz开启数据库持久化时,不会主动覆盖数据库中已存在的同名任务、触发器配置,仅会在首次启动初始化不存在的任务,你需要添加如下配置开启配置覆盖能力:
Spring Boot 配置
application.properties写法:
spring.quartz.overwrite-existing-jobs=true
application.yml写法:
spring: quartz: overwrite-existing-jobs: true
传统Spring XML配置
在SchedulerFactoryBean中添加对应属性:
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 其余Quartz配置省略 --> <property name="overwriteExistingJobs" value="true"/> </bean>
配置效果
开启该配置后,服务启动时会自动对比Spring加载的最新Quartz配置和数据库中持久化的旧配置:
- 若同名触发器类型从SIMPLE修改为CRON,会自动删除
QRTZ_SIMPLE_TRIGGERS表中的旧记录,同时在QRTZ_CRON_TRIGGERS表新增对应CRON触发器记录,同步更新QRTZ_TRIGGERS表的触发器类型 - 所有配置变更和本地运行的逻辑完全一致
注意事项
- 该配置仅对Spring托管的
JobDetail、TriggerBean生效,手动通过Scheduler API新增的任务不受该配置控制 - 若生产环境存在动态调整任务的需求,建议评估开启风险,避免服务启动时覆盖线上手动修改过的任务配置
内容的提问来源于stack exchange,提问作者Koushik
相关产品推荐
相关产品推荐

