SpringBoot动态配置开启关闭定时任务(定时任务单机变集群部署也使用-不引入分布式定时任务框架场景)

时间:2025-03-31 18:56:44

背景介绍springboot定时任务是通过@EnableScheduling注解的方式进行启用的,但是实际开发中本地是不需要进行开启的,而部署至生产环境需要进行开启,那么每次手动进行设置比较繁琐,下面通过配置文件的方式进行配置服务的启用和关闭配置方式;

1:配置文件添加配置项;

enable:
  scheduling: false

2:添加SchedulerCondition;

public class SchedulerCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return (().getProperty(""));
    }
}

3:添加Scheduler类;

@Configuration
public class Scheduler {

    @Conditional()
    @Bean(name = TaskManagementConfigUtils.SCHEDULED_ANNOTATION_PROCESSOR_BEAN_NAME)
    @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
    public ScheduledAnnotationBeanPostProcessor scheduledAnnotationProcessor() {
        return new ScheduledAnnotationBeanPostProcessor();
    }
}

说明:

        完成以上两个文件的配置后,在项目的启动类中可以去掉@EnableScheduling注解,然后在配置文件中加入的配置项即可,以yml文件为例,false关闭,true开启,这样在不同的配置文件中进行设置即可实现不同环境下的定时任务的配置了(亲测可用)