java 动态配置时间实现定时任务

import cn.gaozheng.sales.mapper.TblCreditRemindConfigMapper;
import cn.gaozheng.sales.model.po.TblCreditRemindConfig;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;

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

/**
 * 短信定时任务
 *
 * @Author: 风度翩翩少年郎
 * @Date: 2022-06-24 09:46
 */
@Component
@Slf4j
public class SmsTask implements SchedulingConfigurer {
    @Resource
    private TblCreditRemindConfigMapper configMapper;
    /**
     * 定时任务
     */
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            // 定时任务要执行的内容
            log.info("定时任务开始-------------------------");
            send();
        }
    };

    Trigger trigger = new Trigger() {
        @Override
        public Date nextExecutionTime(TriggerContext triggerContext) {
            String cron = null;
            // 读取数据库配置
            List<TblCreditRemindConfig> configs = configMapper.selectAll();
            if (CollUtil.isNotEmpty(configs)) {
                TblCreditRemindConfig config = configs.stream().findFirst().orElse(null);
                if (ObjectUtil.isNotNull(config.getRemindTime())) {
//                     cron = "0/20 * * * * ?";
                    // 获取数据库定义的时间进行拼接(直接将表达式存在数据库更灵活)
                    cron = "0 00 " + config.getRemindTime() + " * * ?";
                    log.info("cron:-----------------------------------" + cron);
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
            }
            return null;
        }
    };

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(runnable, trigger);
    }

    /**
     * 为未达标的授信发送短信通知
     */
    public void send() {
      //执行任务的相关逻辑--------
    }
}

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现定时任务配置可以通过使用Spring框架提供的定时任务功能来实现。以下是一个示例代码段,展示了如何在Java配置和调用定时任务: 首先,在Java类中添加`@RestController`和`@RequestMapping`注解,创建一个RESTful API接口: ```java @RestController @RequestMapping("/schedule") public class MyTimeS { // 注入公用的指定定时任务类 @Autowired MyTimeTask myTimeTask; // 实现调用 @RequestMapping("/get") public Object mySchedule(){ // 创建时间格式 DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { // 指定时间 date = dateFormatter.parse("2022-04-10 11:30:50"); } catch (ParseException e) { e.printStackTrace(); } // 进行定时任务方法调用,该方法为异步任务。 myTimeTask.timingTask(myTimeTask, date); // 直接返回结果 return "我已经访问完毕"; } } ``` 在上述代码中,我们创建了一个`MyTimeS`类,并在其中定义了一个`mySchedule`方法,用于调用定时任务。通过 `@RequestMapping("/get")` 注解,我们将该方法映射到`/schedule/get`的URL路径上。 在`mySchedule`方法中,我们使用`SimpleDateFormat`类来指定需要执行定时任务时间。然后,我们通过调用`myTimeTask.timingTask()`方法来触发定时任务的执行。这个方法是一个异步任务,可以在后台线程中执行。 最后,通过返回一个字符串,我们告诉客户端定时任务已经触发完毕。 请注意,上述代码中的`MyTimeTask`类表示公用的指定定时任务类,它可能是您自己定义的一个类。你可以根据自己的需求来实现这个类,并在`MyTimeS`类中进行注入和调用。 这样,当访问`/schedule/get`路径时,Java程序将会执行定时任务并返回结果。<span class="em">1</span> #### 引用[.reference_title] - *1* [java实现动态配置时间进行定时任务](https://blog.csdn.net/weixin_41327271/article/details/124075170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值