背景介绍

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

配置方式

添加SchedulerCondition

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

添加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开启,这样在不同的配置文件中进行设置即可实现不同环境下的定时任务的配置了

enable:
  scheduling: false
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐