已解决
spring boot 定时任务@Scheduled(cron = ““)不可用时并且注入失败时——笔记
来自网友在路上 139839提问 提问时间:2023-11-04 09:57:44阅读次数: 39
最佳答案 问答题库398位专家为你答疑解惑
以下方案是本人使用定时任务时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 中的方法和定时任务的调度策略。
查看全文
99%的人还看了
相似问题
- Kotlin学习——kt里的集合,Map的各种方法之String篇
- Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
- composer切换全局镜像源的方法
- Python通过selenium调用IE11浏览器报错解决方法
- 测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发
- Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
- 类方法,静态方法和实例方法的区别及应用场景
- 【链表的说明、方法---顺序表与链表的区别】
猜你感兴趣
版权申明
本文"spring boot 定时任务@Scheduled(cron = ““)不可用时并且注入失败时——笔记":http://eshow365.cn/6-31708-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!