定时任务 中的job中注入的service接口 为空 解决方法

解决quartz定时任务spring注入Services时空指针问题 解决quartz定时任务spring注入Services时空指针问题 一、问题描述: 使用quartz实现动态任务时,在job定时任务中使用某个service时,通过加注解@Component、@Autowired注入时,定时任务执行时,获取的demoService 对象为null 实例代码如下: public class DemoJob implements Job{ @Autowi... 阅读详情

一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类。

自定义一个类:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public class JobFactory extends AdaptableJobFactory {  
  2.       
  3.     @Autowired  
  4.     private AutowireCapableBeanFactory capableBeanFactory;  
  5.   
  6.     @Override  
  7.     protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {  
  8.         //调用父类的方法  
  9.         Object jobInstance = super.createJobInstance(bundle);  
  10.         //进行注入  
  11.         capableBeanFactory.autowireBean(jobInstance);  
  12.         return jobInstance;  
  13.     }  
  14.       
  15. }  
然后在spring中配置:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <!-- 定时任务的factorybean,配置其他config -->  
  2.     <bean id="jobFactory" class="com.xx.job.JobFactory"></bean>  
  3.     <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  4.         <property name="jobFactory" ref="jobFactory"></property>  
  5.     </bean>  

这时候,我们在定义类继承job的时候,就可以使用autowired注入service对象了:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public class Test1Job implements Job {  
  2.     public final Logger log = Logger.getLogger(this.getClass());  
  3.       
  4.     @Autowired  
  5.     private JobTaskService jobTaskService;  
  6.       
  7.     public void execute(JobExecutionContext context) throws JobExecutionException {  
  8.         //更新上一次执行时间和下一次计划执行时间  
  9.         Date nextProcessTime = context.getNextFireTime();  
  10.         ScheduleJob job = (ScheduleJob) context.getJobDetail().getJobDataMap().get("scheduleJob");  
  11.         job.setNextProcessTime(nextProcessTime);  
  12.         jobTaskService.updateTaskByJobName(job);  
  13.           
  14.         //业务逻辑  
  15.         System.out.println("22222222222222222222:");  
  16.     }  
  17. }  


SSM整合Quartz定时任务项目实战(解决Service注入难题) 允许我们在Spring配置文件中预定义任务模板:<map></map></bean>参数说明:jobClass:指定实际执行的Job类;:向JobExecutionContext中注入自定义参数;durability:是否持久化,即使无Trigger也保留Job定义;:JVM崩溃后是否尝试恢复执行。这些参数可在Job中通过读取:@Override这种方式适合静态任务配置,但对于动态任务仍需编程方式创建。 阅读详情

相关推荐

【ES】--Elasticsearch的分词器深度研究

分词器是ik_max_word,会将“龙马家书”拆分为“龙马”、“马家”、“家书”。然后filter配置的是edge_ngram_filter,在上面拆分的token词组基础上,按照edge_ngram_filter规则进一步拆分。从结果看:分词器是keyword,filter支持edge_ngram_filter,字符过滤器支持tsconvert【简繁体】。分词器是keyword,表明是不进行分词,但filtet中edge_ngram_filter是按照布长方式拆分token,所以得到如此结果。

寻梦友的博客 2428

quartz定时任务框架搭建,以及解决service注入为空问题。

如果这个失效的话,就是job中注入的service还是为空,可以采用用spring bean的方式让spring容器来寻找service类。定义SpringJobFactory 用于解决job中service注入为空的问题。定义QuartzConfig 配置文件。引入quartz依赖。

Soncat2000的博客 969

新手DIY无人机,从电机到飞控,这份配件清单和避坑指南请收好

本文为无人机DIY新手提供从电机到飞控的完整配件清单和避坑指南。详细解析电机KV值选择、电调匹配、飞控系统调试等核心问题,帮助初学者避开常见雷区,顺利完成首飞。特别推荐FPV竞速机和航拍机的配件组合方案,并附赠实用调试命令和故障排查表。

weixin_27032989的博客 237

quartz定时任务解决service为空时的解决方案

quartz 注入 service为空的解决方案

sun_falls的博客 1296

保姆级教程:用ncnn把自训练的YOLOv8模型塞进Android App(附完整代码)

本文提供了一份详细的保姆级教程,指导开发者如何将自训练的YOLOv8模型通过ncnn框架部署到Android应用中。教程涵盖环境配置、模型训练与转换、Android工程集成及性能优化等全流程,并附完整代码实现,帮助开发者快速掌握移动端AI模型部署技术。

weixin_42659194的博客 255

[AbutionGraph] 报表制作-使用Grafana动态可视化知识图谱指标

使用开源报表可视化工具Grafana实时监控时序知识图谱数据仓库AbutionGraph中的数据,实时性报表查询, 满足单次百万千万级的数据查询,毫秒级查询延迟,亚秒级对千亿数据量汇总统计,每日过亿报表查询/多维分析/日志分析等数据指标...

图特摩斯科技-博客 4278

[问题解决]定时任务quartz的job中注入service为null

前言:        在quartz框架中,Job 是通过反射出来的实例,不受spring的管理。Scheduler现在交给Spring生成,在Spirng-context-support  jar包下org.springframework.scheduling.quartz包中有个SpringBeanJobFactory的类,job实例通过该类的createJobInstance方法创建。根据S...

冲动的仔bb博客 5437

ZW3D 二次开发-制作插件

1.Windows 7 SP1 或 Windows 10 或 Windows 11(推荐 Windows 11)2.Visual studio 2017-2022 (或 C/C++的任何其他集成开发环境)(推荐 Visual studio 2022)3.ZW3D 2023 或以上版本(建议使用与 ZW3D 一致的 API 的版本)4.Qt5.9.7(for Windows)博主学习使用环境的是:Windows 11 Version 24H2 + Visual studio 2022 + Qt5.9.7(fo

fhqiwmc的博客 812

Springboot 定时任务,service层无法注入问题详细解决

开发一个微信小程序后台,建立websocket 长连接,需要后台开启定时任务, 定时任务定时查库,相应前台 但是具体执行过程中一直在报空指针错误,最后定位到service 为空,无法调用其相关的方法导致的 于是我尝试不用@Autowired 注入实例,自己new ,但是还是失败了,报空指针 这是spring的一个Bug ,需要手动去配置一个类,主动获取实例,在定时任务中(继承TimerTask类),@Autowired 是失效的,无法注入 解决方案如下: 1.首先添加一个工具类,就是applic

亚索@哈塞给 2217

UG NX二次开发(C#)-VS2022配置NX二次开发模板不能正常显示的问题

随着VS2022的发布,使用VS2022进行UG NX二次开发的人员也会越来越多,但是由于VS2022和以前的VS版本采用代码结构不同,而UG NX的二次开发编程模板还没有适应于VS2022的模板配置,所以不能正常的创建一个完整的工程。本文采用曲线救国的方式来实现VS2022下的UG NX二次开发。如果有读者能很好的解决模板配置,不吝赐教。

GimiGimmy 4275

CKS-CN考试之路----03

这题不需要去生成image和生成deployment所以只需要去检测对应的值即可。编辑/cks/docker/Dockerfile,修改最后第二行的值。编辑/cks/docker/deployment.yaml。

Q先生 824

quartz定时任务的Job无法注入spring bean的解决方案

使用spring 结合quartz进行定时任务开发时,如果直接在job内的execute方法内使用service 或者mapper对象,执行时,出现空指针异常。 问题原因 job对象在spring容器加载时候,能够注入bean,但是调度时,job对象会重新创建,此时就是导致已经注入的对象丢失,因此报空指针异常。 解决方案 方案1:重写JobFactory类 @Component pub...

zhaochao0037的博客 2707

LPDDR5 物理层一致性测试(连载・下):电平、过冲下冲与 Rx 接收眼图 Mask 掩模完整指标解读

本文系统梳理LPDDR5物理层一致性测试全流程,涵盖差分/单端电平、边沿斜率、交叉点电压、过冲下冲及CS/CA/DQ接收眼图掩模(Rx Mask)测试,详解各参数定义与工程实操要点。强调配置需与DRAM MR寄存器同步,突出差分≠合格、面积积分不可忽视、掩模失败优先排查参考电压与信号完整性等高频坑点,为硬件调试与SI工程师提供权威参考。

一只豌豆象的博客 42

springboot集成elastic-job时@Autowired注入service和dao都为空

1、问题根源 springboot集成elastic-job时@Autowired注入service和dao都为空,总结原因是因为定时任务实例对象是new出来的,而不是spring容器管理的,所有@Autowired 的服务都是null。那么解决问题就很简单了。将实例对象放入spring容器里面就解决了。 2、问题再现 新建elastic-job对象 public class MySimpleJo...

open_yu的博客 2603

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【quartz】quartz定时任务service注入失败

quartz定时任务service注入失败的详细的原因我查了查是这样的:Job是在quartz的框架中实例化的,service是在spring容器中创建出来的,所以Job实现类不受spring管理,即导致注入失败,所以要想解决这个问题就需要,将他们关联起来。好在Quartz提供了JobFactory接口,就可以自定义实现创建Job的逻辑。就像这样:public interface JobFacto...

crainnogao的博客 5283

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringBoot Quartz 优雅解决Job注入为空

看了网上很多方案,大多都是实现重载 AdaptableJobFactory,然后利用factory.autowireBean()来注入,我在本地实验,可能版本原因,找不到AdaptableJobFactory类,另辟蹊径,实现了这一版。 一.自实现JobFactory接口MyJobFactory,代码从系统原生SimpleJobFactory拿来,只修改其中一行: 将 return jobClas...

sxpfine的专栏 2361

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

quartz的job实现类无法注入Service类

quartz的job实现类无法注入Service类 原因 Job是在quartz的框架中实例化的,service是在spring容器中创建出来的。 所以Job实现类不受spring管理,即导致注入失败。 解决方案 使用Quartz提供了JobFactory接口,就可以自定义实现创建Job的逻辑,并将jobFactory交给spring容器管理 代码 MyJobFactory类 public cla...

plumblum的博客 2238

springboot中的quartz(job中可自动注入service)

1、引用maven坐标 <!-- Quartz坐标 start --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> ...

weixin_41325595的博客 3532

Quartz Job 中无法注入 Service

一、原因 Job 是在 quartz 的框架中实例化的,service 是在 spring 容器中创建出来的,所以 Job 实现类不受 spring 管理,即导致注入失败。 二、解决方法 1、描述 将 Job 交给 Spring 管理。 2、步骤 1. 创建 AdaptableJobFactory 的子类,并重写 createJobInstance 方法。 public class JobFact...

Liu_xud的博客 1888

解决使用Quartz执行的任务对象(job)中无法注入bean的问题

springBoot整合Quartz后,job中注入的业务service,使用@Autowired获取的对象为null

weiambt的博客 3498

若依 quartz 定时任务中 service mapper无法注入解决办法

上图为任务代码,在任务具体执行的方法中使用,一定要写在方法内使用 SpringContextUtil.getBean()方法实例化Spring service类 下边是ruoyi-quartz模块中util/SpringContextUtil.java(已改写) import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.s...

axd1981的博客 3392

解决Spring quartz定时任务注入对象空指针问题

问题原因 爬虫项目用到spring中的quartz定时任务定时爬取数据,job类我是实现的org.quartz.Job接口,到最后总是发现job类里注入的service实例为null,出现了空指针异常。一开始还以为spring的配置问题,各种找原因,最后还是确定是没有注入的原因。 出现这个问题的原因是: job是在quartz中通过反射实例化出来的,不受spring的管理,因此也就导致这个实例注入...

纵横的博客 2556

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

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

桂的博客 1205

Quartz的具体任务类(实现Job接口)无法注入业务逻辑service对象的问题

/** * Quartz定时任务Impl * * @author ZhangChao * @date 2019/6/10 13:24 * @since 1.0.0 */ @Remote @Transactional(rollbackFor=Exception.class) @Service public class QuartzServiceImpl implements Quart...

The man was lazy and left no message 948

SpringBoot + Quartz定时任务踩过的坑

1.SchedulerConfig.java定时任务Job中service注入NullPointerException [原因]:trigger没有注册,很诡异?没设置时间也运行? 2.定时任务Job中service注入NullPointerException [原因]:创建的Service是Quartz管理的,不是Spring,无法注入Job 是通过反射出来的实例,不受spring的管理 @Autowired private ApplicationContext applicationContext;

weixin_43703769的博客 3560

quartz工程容器启动与 Service注入

容器启动 因为任务没有定义在 ApplicationContext.xml中,而是放到了数据库中,SpringBoot启动时,怎么读取任务信息? 或者,怎么在 Spring启动完成的时候做一些事情? 创建一个类,实现 CommandLineRunner接口,实现 run方法。 从表中查出状态是 1的任务,然后构建。 Service类注入到 Job中 Spring Bean如何注入到实现了Job接口的类中? 例如在 TestTask3中,需要注入 ISysJobService,查询数据库发送邮件

Leon_Jinhai_Sun的博客 686
上一篇: quartz
下一篇: MySQL ERROR 1698 (28000) 错误
rabbit0708
博客等级 码龄15年 12粉丝 27原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值