Java定时任务-获取接口数据保存到数据库

在项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发。

@Scheduled

@Scheduled注解:任务自动化调度。要使用@Scheduled注解,首先需要在启动类添加@EnableScheduling,启用Spring的计划任务执行功能,这样可以在容器中的任何Spring管理的bean上检测@Scheduled注解,执行计划任务

@Scheduled注解参数

cron参数,这个参数是最经常使用的参数,表示接收一个cron参数,cron它是一个表达式,最多接收7个参数,从左到右分别表示:秒 分 时 天 月 周 年;参数以空格隔开,其中年不是必须参数,可以省略。

是否必填参数范围通配符
0-59, - * /
0-59, - * /
0-23, - * /
1-31, - * ? / L W
1-12 或 JAN-DEC, - * /
1-7 或 SUN-SAT, - * ? / L #
1970-2099, - * /

不太会写cron表达式的小伙伴可以参考一下我之前发的开发常用网址中的cron生成器!

开发常用网址(持续更新中...)_半度纳的博客-CSDN博客https://blog.csdn.net/Five297/article/details/125929667?spm=1001.2014.3001.5502

定时任务

package com.lxdsoft.scrap.im.bu.tool;

import com.lxdsoft.scrap.im.bu.service.IImBuNonRoadBlacklistService;
import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/**
*定时任务
*/
@Slf4j
@Service
public class ScheduledTask {

    @Autowired
   private IImBuNonRoadBlacklistService buNonRoadBlacklistService;

    @Transactional(rollbackFor = Exception.class, readOnly = false)
    @Scheduled(cron = "0 0 21 * * ? ")//此注解的功能是定时任务
    //@Scheduled(initialDelay = 1000, fixedDelay = 60000)
    public void execute(){
        try {
            buNonRoadBlacklistService.selectBlacklist();//调用获取到的JSON数据方法
            System.out.println(">>>>>定时任务启动<<<<<");
        }catch (Exception ex){
            log.error(ex.getMessage(), ex);
        }
    }
}

获取接口数据保存到数据库

        定时任务写好后进行调用接口获取数据保存到数据库,操作如下↓

Java调用接口获取json数据解析后保存到数据库_半度纳的博客-CSDN博客今天给大家带来一个调用接口,来获取数据解析后再保存到数据库中的业务,业务中的Mapper和实体类我就不在这里写了,相信大家都会写新增的SQL和定义实体类。下面是我写的业务代码,有什么建议可以给我评论留言。https://blog.csdn.net/Five297/article/details/127093510?spm=1001.2014.3001.5502

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是关于从数据库获取 cron 表达式实现定时任务的内容。 在实际开发中,我们通常需要从数据库获取定时任务的执行时间,而不是在代码中硬编码 cron 表达式。为了实现这个功能,我们可以使用 Spring Boot 提供的 ScheduledConfigurer 接口,该接口定义了一个 configureTasks 方法,可以在该方法中动态地配置定时任务。下面是一个简单的示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.CronTask; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import java.util.List; @Configuration public class DynamicScheduleTask implements SchedulingConfigurer { @Autowired private TaskRepository taskRepository; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { List<Task> taskList = taskRepository.findAll(); for (Task task : taskList) { CronTask cronTask = new CronTask(() -> { // 定时任务的具体逻辑 System.out.println("Hello, world!"); }, task.getCronExpression()); taskRegistrar.addCronTask(cronTask); } } } ``` 上面的代码定义了一个 DynamicScheduleTask 类,该类实现了 ScheduledConfigurer 接口,并重写了 configureTasks 方法。在该方法中,我们首先从数据库获取所有的定时任务,并使用 CronTask 对象创建对应的定时任务。CronTask 对象需要传入一个 Runnable 对象和一个 cron 表达式,当定时任务触发时,会执行 Runnable 对象中的逻辑。最后,我们使用 ScheduledTaskRegistrar 对象的 addCronTask 方法将定时任务添加到 Spring 定时任务管理器中。 需要注意的是,如果数据库中的定时任务配置发生了变化,需要重新加载定时任务的配置。可以使用 ScheduledTaskRegistrar 对象的 destroy 方法取消已有的定时任务,并重新加载新的定时任务配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半度纳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值