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

文章介绍了如何通过配置文件和自定义条件来控制SpringBoot应用中的定时任务是否启用。在本地开发环境中,定时任务可以关闭,而在生产环境启用。通过添加`enable.scheduling`配置项,结合自定义的`SchedulerCondition`和`Scheduler`类,可以动态地根据环境决定是否启用@Scheduled注解的处理,无需手动修改代码中的`@EnableScheduling`注解。
摘要由CSDN通过智能技术生成

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

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

enable:
  scheduling: false

2:添加SchedulerCondition;

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

3:添加Scheduler类;

@Configuration
public class Scheduler {

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

说明:

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值