当前位置: 首页 > news >正文

spring boot 定时任务@Scheduled(cron = ““)不可用时并且注入失败时——笔记

以下方案是本人使用定时任务时Service注入失败的解决方案

在 Spring Boot 中执行定时任务时,你可以注入并直接调用 Service 中的方法,就像在普通的业务逻辑中一样。
以下是执行定时任务时调用 Service 的步骤:

创建一个 Service 类,例如:

@Service
public class MyService {public void doSomeTask() {// 你的业务逻辑}
}

创建一个定时任务类,通常实现 org.quartz.Job 接口,并注入你的 Service 类:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class MyScheduledJob implements Job {@Autowiredprivate MyService myService;@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {myService.doSomeTask();}
}

在 Spring Boot 应用的配置类中配置定时任务调度器,并关联定时任务类,如下所示:

import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class QuartzConfig {@Beanpublic JobDetail myJobDetail() {return JobBuilder.newJob(MyScheduledJob.class).withIdentity("myJob").storeDurably().build();}@Beanpublic Trigger myJobTrigger() {SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(60) // 定时任务执行间隔.repeatForever();return TriggerBuilder.newTrigger().forJob(myJobDetail()).withIdentity("myTrigger").withSchedule(scheduleBuilder).build();}//@Bean//public Trigger MemberJobTrigger() {//    SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()//            .withIntervalInSeconds(10) // 定时任务执行间隔//            .repeatForever();////    return TriggerBuilder.newTrigger()//            .forJob(MemberJobDetail())//            .withIdentity("trigger")//            .withSchedule(scheduleBuilder)//            .build();//}@Beanpublic Trigger MemberJobTrigger() {// 使用 CronScheduleBuilder 创建一个每天凌晨0点的触发器CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.dailyAtHourAndMinute(0, 0);return TriggerBuilder.newTrigger().forJob(MemberJobDetail()).withIdentity("trigger").withSchedule(scheduleBuilder).build();}
}

配置完成后,定时任务将在每次触发时执行 MyScheduledJob 中的 execute 方法,该方法内部调用 MyService 的方法。

启动 Spring Boot 应用,定时任务会根据配置定时执行 MyService 中的方法。

确保你的 Spring Boot 应用正确配置了定时任务,并且定时任务与 Service 正确关联。根据上述示例,你可以根据自己的需求自定义 Service 中的方法和定时任务的调度策略。

http://www.lryc.cn/news/218206.html

相关文章:

  • R语言用jsonlite库写的一个图片爬虫
  • Linux多线程编程- pthread_self()
  • APM建设踩了哪些坑?去哪儿旅行分布式链路追踪系统实践
  • ASTM F963-23美国玩具安全新标准发布
  • swift语言下SurfGen库做的爬虫是什么样的 ?
  • Vue纯CSS实现掷色子
  • 使用vscode开发uniapp项目常用的辅助插件,提升开发效率
  • python脚本监听域名证书过期时间,并将通知消息到钉钉
  • 那些看起来高大上的封装函数
  • go语言 | grpc原理介绍(三)
  • 记一次heapdump泄漏获取服务器权限
  • 大疆Livox MID-360安装ROS1/2驱动 Ubuntu20.04
  • Android 重启App
  • C语言的前置知识:数据量单位、汇编语言和寄存器
  • 【IDEA】在工具栏设置快速创建包和类的图表
  • int arrayL = sizeof(array) / sizeof(array[0]);
  • FFmpeg——使用Canvas录制视频尚存问题的解决方案
  • css进阶知识点速览
  • P2047 [NOI2007] 社交网络
  • 线性表的顺序存储
  • ChinaSoft 论坛巡礼 | 安全攸关软件的智能化开发方法论坛
  • 采用XML作为GUI描述语言
  • rust入门基础案例:猜数字游戏
  • vue-cli5.0.x优雅降级,配置项目兼容旧版浏览器
  • 关于RabbitMQ的小总结
  • webgoat靶场攻关
  • BEV-YOLO 论文学习
  • C++可以使用负数作为下标索引
  • react+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)
  • 峰回网关数采PLC