Spring Boot定时任务指定时间执行 实战代码

最近接收到一个需求,页面如下:

 需要根据指定时间执行定时任务,接到需求后也是研究了半天,结合网上老师们的教程,现分享给大家我写的相关内容,直接上代码片段

我做的只是支持单机版,如果大家感兴趣可以改造成使用redis分布式缓存,师傅领进门,修行在个人,只是提供一个思路,在有的内容上大家可以随意发挥你们的想法能力,不过需要我这块砖做基础

1、首先是服务重启后,我们指定的定时任务需要重新加载到内存中

import com.hsgd.brandhub.task.service.SrLuckDrawAddPrizeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
@Slf4j
public class HsgdStartTaskInitSrLuckDrawPrizeAddTasks implements ApplicationRunner {

    @Resource
    private SrLuckDrawAddPrizeService srLuckDrawAddPrizeService;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("[掌柜抽奖]追加奖品定时任务列表查询开始...");
        try {
            srLuckDrawAddPrizeService.queryUnexecutedSrLuckDrawAdditionalTasks();
            log.info("[掌柜抽奖]追加奖品定时任务初始化完成...");
        } catch (Exception e) {
            e.printStackTrace();
            log.info("[掌柜抽奖]追加奖品定时任务初始化异常...");
        }
    }

}
package com.hsgd.common.domain.Brandhub.vo;

import lombok.Data;

import java.io.Serializable;

@Data
public class HsgdSrLuckDrawAddPrizeCronVO implements Serializable {

    private Long additionId;

    private Long activeId;

    private Long configId;

    private Integer addNum;

    private String addCronTime;
}
import com.hsgd.common.domain.Brandhub.vo.HsgdSrLuckDrawAddPrizeCronVO;

import java.util.List;

public interface SrLuckDrawAddPrizeService {

    void addSrLuckDrawPrizeCronTask(HsgdSrLuckDrawAddPrizeCronVO param);

    void removeSrLuckDrawPrizeCronTask(HsgdSrLuckDrawAddPrizeCronVO param);

    Integer getScheduledTasksSize();

    void queryUnexecutedSrLuckDrawAdditionalTasks();

    void additionSrLuckDrawPrizeNum(HsgdSrLuckDrawAddPrizeCronVO param);

    List<String> getScheduledTasksList();
}


import com.hsgd.brandhub.task.handler.CronTaskRegistrarHandler;
import com.hsgd.brandhub.task.handler.HsgdSrLuckDrawAdditionTask;
import com.hsgd.brandhub.task.service.SrLuckDrawAddPrizeService;
import com.hsgd.common.brandhub.util.SpringContextUtil;
import com.hsgd.common.domain.Brandhub.vo.HsgdSrLuckDrawAddPrizeCronVO;
import com.hsgd.common.feign.brandhub.SrLuckDrawAddPrizeClient;
import com.hsgd.common.lang.DateUtil;
import com.hsgd.common.serialize.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
@Slf4j
public class SrLuckDrawAddPrizeServiceImpl implements SrLuckDrawAddPrizeService {

    @Resource
    private CronTaskRegistrarHandler cronTaskRegistrarHandler;

    @Resource
    private SrLuckDrawAddPrizeClient srLuckDrawAddPrizeClient;

    @Override
    public void addSrLuckDrawPrizeCronTask(HsgdSrLuckDrawAddPrizeCronVO param) {
        String cron = getCronStr(param);
        String taskKey = param.getActiveId() + "-" + param.getConfigId() + "-" &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

门主冬七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值