`
xiangzi0506
  • 浏览: 7600 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

quartz注解调用service

阅读更多

如果要在Job中注解调用业务逻辑层Service即下面代码所示

@Autowired

private TestJobService testJobService;

package com.demo.job;

import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;

import com.demo.service.job.TestJobService;

public class QuartzJobFactory implements Job {
	
	private final Logger log = Logger.getLogger(QuartzJobFactory.class);
	
	@Autowired
	private TestJobService testJobService;
	
	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		log.info("----->>任务开始<<-----");
		ScheduleJob scheduleJob = (ScheduleJob) context.getMergedJobDataMap().get("scheduleJob");
		System.out.println("任务名称 = [" + scheduleJob.getJobName() + "]\t任务组 = [" + scheduleJob.getJobGroup() + "]");
		testJobService.backupCust();
	}

}

需要在spring配置文件中添加代码如下

<!-- 定时任务 -->
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	<property name="jobFactory">
		<bean class="com.demo.job.MySpringBeanJobFactory"></bean>
	</property>
</bean>

 另外需要创建一个MySpringBeanJobFactory类重构createJobInstance方法

package com.demo.job;

import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.SpringBeanJobFactory;

public class MySpringBeanJobFactory extends SpringBeanJobFactory {

	@Autowired
	private AutowireCapableBeanFactory beanFactory;

	/**
      * 这里我们覆盖了super的createJobInstance方法,对其创建出来的类再进行autowire。
      */
	@Override
	protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
		Object jobInstance = super.createJobInstance(bundle);
		beanFactory.autowireBean(jobInstance);
		return jobInstance;
	}
}

 

分享到:
评论

相关推荐

    ssm-springMVC-整合Quartz(解决了无法注入service问题).doc

    ssm-springMVC-整合Quartz(解决了无法注入service问题).doc

    ssm-springMVC-整合Quartz(解决了无法注入service问题)-项目示例

    一是使用`@Scope("prototype")`注解,将Service定义为多例,这样每次触发任务时都会创建一个新的Service实例。二是利用`AutowireCapableBeanFactory`,在Job执行前动态注入Service。这通常在`Scheduler`的`start()`...

    ssm框架+quartz2.2Jar包

    5. **使用Quartz API**:在需要的地方,如Service层,可以调用Quartz提供的API来触发或修改任务。 SSM框架结合Quartz,可以实现灵活的定时任务调度,比如数据库清理、数据同步、统计分析等后台业务。这样的设计使得...

    spring boot集成quartz定时器

    总结,Spring Boot集成Quartz定时器能够方便地创建和管理定时任务,同时利用Spring的依赖注入,使得Job可以灵活地调用其他服务或组件。这种方式使得我们的任务更加模块化和易于维护。在实际开发中,根据项目需求,...

    ssm集成quartz完成定时任务

    它通过DispatcherServlet分发请求到相应的Controller,再由Controller调用Service进行业务处理,最后返回响应给前端。 **MyBatis** 是一个轻量级的持久层框架,它简化了数据库操作,允许开发者将SQL语句直接写在...

    spring整合quartz两种方式以及spring自带定时任务使用

    Spring 3.0以后,可以通过注解来简化配置,使得Quartz的集成更加简洁。首先,你需要创建一个实现了`org.springframework.scheduling.quartz.SchedulerAware`的类,以确保Spring可以初始化Scheduler。接着,使用`@...

    spring-quartz jar包

    在实际项目中,开发者通常会创建一个Job类,该类实现了Quartz的`org.quartz.Job`接口,并通过Spring的`@Component`或`@Service`注解将其注册到Spring容器中。然后,配置一个Trigger来决定何时执行这个Job。Spring ...

    maven+springboot+myBatis+quartz+mysql+Layui动态页面管理quartz定时任务(有sql文件)

    - **Controller层**:SpringBoot的Controller层接收前端请求,调用Service层方法,并返回结果给前端。 - **Service层**:业务逻辑层,负责处理具体的业务操作,如添加、修改、删除定时任务。 - **Repository层**:...

    spring+quartz 动态任务方案

    这里可以通过 XML 或者注解的方式来完成。 3. **启动调度服务**:最后是启动 Quartz 调度服务,通常会在应用启动时通过一个 Servlet 来初始化调度器并启动任务。 #### 三、Spring + Quartz 动态任务方案详解 ...

    spring+mybatis+quartz

    例如,你可以创建一个Job,该Job调用Spring的Service方法来执行特定业务逻辑,然后使用CronTrigger设定这个Job的执行时间。 总结来说,"spring+mybatis+quartz"的组合提供了强大的后端开发能力,涵盖了数据访问、...

    基于spring+mybatis的quartz应用

    通过调用Quartz的API,如`Scheduler`的`scheduleJob()`、`pauseJob()`、`resumeJob()`等方法,实现对任务的动态管理。 9. **异常处理**:别忘了处理Job执行过程中的异常,可以使用`@DisallowConcurrentExecution`...

    Spring-quartz实现定时器(含代码).doc

    在任务类 `MyTask` 中,我们使用了 `@Service` 注解标记该类为一个 Spring Bean,并使用 `@Scope("prototype")` 注解表明每次调用时创建新的实例。`MyTask` 类中的 `test` 方法就是由 Quartz 定时器调用的方法。为了...

    利用spring的ApplicationContext在程序中唤醒quartz的job

    在Spring中,我们通常会通过`@Service`注解标记此类,并使用`@Autowired`注解注入所需的其他服务或DAO。服务类可能会有一个方法来启动或唤醒Quartz Job,这个方法可能会调用Quartz的`Scheduler`接口的相关方法。 接...

    spring和quartz整合,并简单调用(实例讲解)

    在 `Task` 包下创建一个名为 `MyTaskService` 的类,使用 Spring 的 `@Service` 注解进行标记,然后定义一个 `executeTask` 方法作为定时任务的具体执行逻辑。例如: ```java @Service public class MyTaskService ...

    spring整合quartz定时任务

    例如,通过注解方式注入Service或Repository,实现任务与业务逻辑的解耦。 总的来说,Spring整合Quartz为开发者提供了一个强大且灵活的任务调度平台,使得定时任务的管理变得更加便捷。通过合理的配置和测试,可以...

    基于springboot创建的web项目整合Quartz框架的代码

    最后,在Spring Boot的主类或者适当的启动点调用`scheduleJob()`方法,启动Job的调度。 以上就是将Quartz整合到Spring Boot Web项目的基本步骤。通过这种方式,你可以轻松地创建和管理定时任务,以实现如数据同步、...

    quartz spring动态定时任务,可以直接在tomcat上面部署运行

    然后,定义Job Bean,可以使用`@Component`或`@Service`注解,并且实现`org.quartz.Job`接口,定义`execute(JobExecutionContext context)`方法来编写任务逻辑。 接下来,定义Trigger Bean,通常使用`...

    java 定时任务

    - **Controller**:控制器处理HTTP请求,调用Service层的方法,返回结果给客户端。 6. **Service层** - 定义Service接口,包含业务逻辑方法,这些方法会被Controller层调用,也可以被定时任务调用。 - Service...

    Pafa4新特性指南1.0.1苏秩

    - 包括SAO示例、调用ESA(Enterprise Service Access)、调用ESB(Enterprise Service Bus)以及调用EJB的示例和规范。 7. **DAO(Data Access Object)**: - 提供DAO示例、PO(Plain Old Java Object)规范、...

    springboot整合TKMytis框架demo

    7. **配置 Service**:创建 Service 层,通过 Autowired 注解注入 Mapper 接口,实现业务逻辑。 8. **编写 Controller**:在 Controller 层中处理 HTTP 请求,调用 Service 实现功能。 整合 TKMyBatis(MyBatis 的...

Global site tag (gtag.js) - Google Analytics