SpringBoot动态配置定时任务

最近一个需求,需要在项目中加定时任务功能,但有时候又不想让该任务执行

一开始想的是设置cron,让时间无限大,但是不太合理,最终 ,找到了通过配置注解的方式实现该功能

若需要开启定时任务,则做以下配置;否则,去掉配置就好了
在application文件中 ,配置cron

schedul:
  cron: 0/6 * * * * ? #这里配置的是定时表达式,方便直接使用

在定时任务代码块中使用@ConditionalOnProperty注解

@Slf4j
@Configuration
@EnableScheduling

  /**
   * 默认条件注解是开启的,现在采用配置文件的变量来手动控制定时任务是否执行
   * matchIfMissing:默认为false,若未进行属性配置,则自动配置不生效;若matchIfMissing为true,则表示如果没有对应的属性配置,则自动配置默认生效。
   * havingValue:与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置
  */
@ConditionalOnProperty(prefix = "schedul", name = "cron")
public class SyncUserAndOrgScheduleConfig implements SchedulingConfigurer{

    private static final Logger LOGGER = LoggerFactory.getLogger(SyncUserAndOrgScheduleConfig.class);

    @Autowired
    private UserInfoOaService userOaService;

    @Autowired
    private OrganizationOaService orgOaService;

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar){
       //代码块
    }

    //这里直接取配置文件中配置的值
    @Scheduled(cron = "${schedul.cron}")
    public void syncTask() {
        LOGGER.info("同步任务开启");
        ScheduledTaskRegistrar taskRegistrar = new ScheduledTaskRegistrar();
        this.configureTasks(taskRegistrar);
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值