SpringBoot+Quartz定时任务:Job类对象注入(Demo)

本文介绍了在SpringBoot应用中使用Quartz定时任务时遇到的Job对象注入问题。当试图在定时任务类中调用依赖的方法时,由于反射机制未进行Spring的自动注入,导致对象为null。为了解决这个问题,文章详细讲解了如何创建一个自定义的MyAdaptableJobFactory类,将依赖对象手动加入到Spring IOC容器,并设置新的JobFactory,确保UserService能够正确注入。
摘要由CSDN通过智能技术生成

接上文
SpringBoot+Quartz定时框架(Demo)

1.自定类

public class UserService {
   
    public void testMethod(){
   
        System.out.println("UserService.testMethod");
    }
}

2.定时任务类中调用测试方法

import com.example.demo.pojo.UserService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Date;

/**
 * 定时任务类
 */
public class QuartzDemo implements Job {
   
    //注入自定类
    @Autowired
    private UserService userService;
    
    /**
     * 任务被触发时所执行的方法
     * @param context
     * @throws JobExecutionException
     */
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
   
        //调用自定类测试方法
        this.userService.testMethod();
    }
}

3.控制台报错

java.lang.NullPointerException: null
	at com.example.demo.quartz.QuartzDemo.execute(QuartzDemo.java:25) ~[classes/:na]
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.2.1.jar:na]
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.2.1.jar:na]

由报错可知UserService对象未注入,查看源码得知

//1.创建job对象
    @Bean
    public JobDetailFactoryBean jobDetailFactoryBean() {
   
        JobDetailFactoryBean factoryBean 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值