原因
Job是在quartz的框架中实例化的,service是在spring容器中创建出来的。
所以Job实现类不受spring管理,即导致注入失败。
解决方案
在executeInternal方法中加入一行代码SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);就ok了
如下
@Component public class RemindJob extends QuartzJobBean { private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(RemindJob.class); @Autowired private ProjectTaskService projectTaskService; @Override protected void executeInternal(JobExecutionContext arg0) { SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); log.info("RemindJob have bean started... "); projectTaskService.duRemindJob(); } }
相关推荐
在提供的压缩包中,`ssm-springMVC-整合Quartz(解决了无法注入service问题).doc`可能包含了一份详细的文档,详述了上述步骤以及具体的配置代码。而`sx-ssm-quartz`可能是一个源码示例,展示了如何在实际项目中应用...
首先,`AppService.java`很可能包含了一个服务类,该类可能负责与Quartz相关的业务逻辑,例如创建、更新或删除Job。在Spring中,我们通常会通过`@Service`注解标记此类,并使用`@Autowired`注解注入所需的其他服务或...
本文将详细讲解如何在Spring Boot项目中集成Quartz定时器,以及如何利用Spring的依赖注入特性来实现Job。 一、集成Quartz定时器 1. 添加依赖:首先,你需要在Spring Boot项目的`pom.xml`或`build.gradle`文件中...
3. **创建Job类**:编写实现`org.quartz.Job`接口的类,这个类包含了定时任务的具体逻辑。可以利用Spring的`@Component`注解将这个类纳入Spring的管理范围,方便依赖注入。 4. **关联Job和Trigger**:在Spring配置...
在实际项目中,开发者通常会创建一个Job类,该类实现了Quartz的`org.quartz.Job`接口,并通过Spring的`@Component`或`@Service`注解将其注册到Spring容器中。然后,配置一个Trigger来决定何时执行这个Job。Spring ...
2. **定义Job类**:创建实现`org.quartz.Job`接口的类,定义实际要执行的任务逻辑。 3. **配置Job和Trigger**:通过XML或Java配置,将Job与Trigger关联起来,定义触发任务的时间规则。 4. **启动Scheduler**:在...
你可以学习到如何将Quartz集成到Spring应用中,并利用Spring的依赖注入特性来管理和配置Quartz组件。 "quartz-1.5.2.jar" 是Quartz库的旧版本,虽然不是最新的,但依然能提供Quartz的基本功能。了解这个版本可以...
这个类需要实现`org.quartz.Job`接口,并重写`execute(JobExecutionContext context)`方法,该方法是Quartz执行任务时调用的: ```java import org.quartz.Job; import org.quartz.JobExecutionContext; import org...
2. **定义任务和触发器**:接下来需要定义具体的任务(即 Job 实现类)以及如何触发这些任务(即 Trigger)。这里可以通过 XML 或者注解的方式来完成。 3. **启动调度服务**:最后是启动 Quartz 调度服务,通常会...
你需要创建一个实现了`org.quartz.Job`接口的类,这是Quartz执行任务的基础。在这个类中,你需要重写`execute(JobExecutionContext context)`方法,这个方法将在指定时间被调用执行实际的业务逻辑。 5. **启动和...
4. **定义Job和Trigger**:创建Job类实现`org.quartz.Job`接口,定义具体的业务逻辑。同时,创建Trigger类(通常是CronTrigger或SimpleTrigger),指定触发Job执行的时间规则。然后,将这两个类声明为Spring Bean。 ...
Quartz的配置则涉及Job类、Trigger类型和调度策略。 在实际应用中,Spring的AOP可以用来实现事务管理,确保在MyBatis执行的数据库操作中保持事务的一致性。Quartz可以用来定时执行数据清理、统计分析或者发送邮件等...
例如,我们可能会创建一个 `MyEmailJob` 类来实现发送邮件的任务,然后使用 `MethodInvokingJobDetailFactoryBean` 来定义这个 Job,指明执行哪个方法。接着,我们可以用 `CronTriggerFactoryBean` 设置 cron 表达式...
`QuartzJobBean` 是一个抽象类,实现了 `Job` 接口,并提供了对 Spring 的支持。它使用模板方法模式,需要重写 `executeInternal` 方法来定义具体的业务逻辑: ```java public abstract class QuartzJobBean ...
然后,定义Job类并实现`org.quartz.Job`接口,以及触发器(Trigger)来指定何时执行任务。例如: ```java public class MyJob implements Job { @Override public void execute(JobExecutionContext context) { ...
SpringBoot整合Quartz是一个常见的需求,它...这个过程中涉及了SpringBoot的依赖注入、配置管理、组件扫描,以及Quartz的Job、Trigger、Scheduler的配置和使用。通过这些知识点,你可以构建出一个强大的定时任务系统。
2. **定义Job类**:Quartz的`Job`接口是执行任务的基础,我们需要创建一个实现了该接口的类,并在其中编写实际的任务逻辑。在Spring环境中,我们通常会使用`SpringBeanJobFactory`,这样Quartz就能找到并注入所需的...
2. **JobToDo.java**:这是一个自定义的Job实现类,包含了实际的业务逻辑。 3. **TestQuartz.java**:测试类,用于验证定时任务的配置和执行是否正确。 4. **TaskName.java**:可能用于定义任务的枚举类型,便于管理...
然后,在你的Job类中实现`org.quartz.Job`接口,定义具体的执行逻辑。 #### 2. 注解驱动的方式 Spring 3.0以后,可以通过注解来简化配置,使得Quartz的集成更加简洁。首先,你需要创建一个实现了`org.spring...
创建一个Job类,实现`org.quartz.Job`接口,并在需要执行的任务中注入所需的Service或Repository。例如,创建一个`HelloJob`类: ```java import org.quartz.Job; import org.quartz.JobExecutionContext; import ...