`
Everyday都不同
  • 浏览: 723576 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

Spring4+quartz2的配置和代码方式调度

阅读更多

前言:这些天简直被quartz虐哭。。因为quartz 2.x版本相比quartz1.x版本的API改动太多,所以,只好自己去查阅底层API……

 

quartz定时任务必须搞清楚几个概念:

JobDetail——处理类

Trigger——触发器,指定触发时间,必须要有JobDetail属性,即触发对象

Scheduler——调度器,组织处理类和触发器,配置方式一般只需指定触发器(因为触发器已经指定了对应的处理类),代码方式则需同时指定触发对象和触发器。

 

代码方式中,quartz2.x一般都是用相应工厂类来建立JobDetail和Trigger的。

 

一般来说,任务调度有2中方法,一种是只把Job定义为一个普通类,但同时在配置文件中必须指定targetObject和属性,废话不多说,上demo:

 

<!-- 任务类 -->
	 <bean id="test" class="org.test.job.Task1" />
	<bean id="task1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="test" />
		</property>
		<property name="targetMethod">
			<value>step1</value>
		</property>
	</bean>
	
	<bean id="task2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="test" />
		</property>
		<property name="targetMethod">
			<value>step2</value>
		</property>
	</bean>
	
	<bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail">
			<ref bean="task1" />
		</property>
		<property name="cronExpression">
			<value>0 0 11 * * ? *</value>
		</property>
	</bean>
	
	<bean id="trigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail">
			<ref bean="task2" />
		</property>
		<property name="cronExpression">
			<value>0 02 11 * * ? *</value>
		</property>
	</bean>
	
	<bean id="schedule1" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="trigger1" />
				<ref bean="trigger2" />
			</list>
		</property>
	</bean>

 当然:我上面是在1个类里面定义2个方法,分别指定这2个方法的触发时间——这种情况不太常见,如果不需要,减少task和trigger就行。但对于我这里说到的这种情况,有无简化方法我暂时还未发现……

 

 

在这里,类Task1只是一个很普通的类。

 

方式2:继承QuartzJobBean类,同时必须重写executeInternal方法。

配置如下:

 

<!-- 任务类 -->
	 <bean id="job1" class="org.test.job.TestJob1" />
	<bean id="job2" class="org.test.job.TestJob2" /> 
	
	<!-- 定义触发器来管理任务bean -->
	<bean id="cronTriggerJob1" 
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
		p:cronExpression="0 52 17 * * ? *" >
		<property name="jobDetail">
			<bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
			p:durability="true"
			p:jobClass="org.test.job.TestJob1"
			 />
		</property>
	</bean>
	
<bean id="cronTriggerJob2" 
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
		p:cronExpression="0 30 17 * * ? *" >
		<property name="jobDetail">
			<bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
			p:durability="true"
			p:jobClass="org.test.job.TestJob2"
			 />
		</property>
	</bean>
	<!-- 执行实际的调度 -->
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTriggerJob1" />
			 	<ref bean="cronTriggerJob2" /> 
			</list>
		</property>
	</bean> 

 

 

这种方式还有代码写法:

 

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
			JobDetail jobDetail = JobBuilder.newJob(Job.class)
					.setJobData(new JobDataMap(Map map)).build();

                      //在某一时刻触发
			Trigger trigger = TriggerBuilder.newTrigger().startAt(Date date).build();
                   //在指定cron表达式的时间点触发
//		Trigger trigger = TriggerBuilder.newTrigger()
//				.withSchedule(CronScheduleBuilder.cronSchedule(String cron)).build();
                      //调度器将任务类与触发器关联
			scheduler.scheduleJob(jobDetail, trigger);
			scheduler.start();

 

 

分享到:
评论

相关推荐

    spring4+hibernate5+quartz2+hdfs整合

    在提供的压缩包"spring4+hibernate5+quartz2+hdfs.rar"中,可能包含了配置文件、Java源代码、数据库连接设置等,用户只需提供自己的JDBC连接信息,即可快速部署和运行这个整合系统。通过解压并研究这些文件,开发者...

    spring+mybatis+quartz任务调度实例和spring+quartz任务调度实例

    里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例

    spring+springMVC+mybatis+quartz动态定时任务创建

    Quartz是一个开源的作业调度框架,常用于创建和执行定时任务。在"spring+springMVC+mybatis+quartz动态定时任务创建"项目中,Quartz扮演着关键角色。它可以动态地添加、修改或删除定时任务,这在需要根据业务需求...

    spring3.0+quartz-1.6.0定时

    总结起来,"spring3.0+quartz-1.6.0定时"的实现涉及到Spring框架的定时任务支持和Quartz库的结合使用,通过Spring的配置管理Quartz调度器,定义任务和触发器,最后编写具体任务逻辑的Java类。这种组合在实际项目中...

    spring boot+vue+quartz2.2.3整合定时调度系统

    spring boot+vue+quartz2.2.3整合定时调度系统持久化道mysql,sql脚本在项目里面。sql文件spring boot+vue+quartz2.2.3整合定时调度系统持久化道mysql

    spring+mvc+quartz.rar

    本教程将详细讲解如何利用Spring 4.3.15、Spring MVC 4.3.15和Quartz 2.2,构建一个可管理的定时任务系统,包括任务的暂停、启动、立即执行和重新调度等功能。 一、Spring MVC与Quartz简介 1. Spring MVC:是...

    spring boot + quartz 动态管理 分布式

    这些资源可能包括Quartz的Job类定义、Spring Boot的配置文件(application.properties或application.yml)、数据库模型和迁移脚本、以及用于演示动态管理任务的控制器和服务类代码。开发者可以研究这些文件,了解...

    Spring mvc + Mybatis + quartz + swagger 定时任务管理[新增、编辑、删除、修改]

    本项目就是基于Spring MVC、Mybatis、Quartz和Swagger实现的一个定时任务管理系统,旨在提供一种灵活且可配置的方式来管理和控制定时任务。下面将详细讲解这个系统的核心组成部分及其工作原理。 首先,Spring MVC是...

    Spring + Quartz配置实例(转载)

    2. **Spring配置文件**:在Spring的XML配置文件中,我们需要声明一个`SchedulerFactoryBean`,它是Spring对Quartz调度器的封装。通过这个bean,我们可以配置Quartz的相关属性,如JobStore类型(内存或数据库存储),...

    spring+quartz任务调度代码版

    本项目"spring+quartz任务调度代码版"显然是一个结合了这两者的实践案例,旨在展示如何在Spring环境下集成和使用Quartz进行任务调度。 Spring框架是一个开源的应用框架,它提供了丰富的功能,包括依赖注入、AOP...

    spring4+quartz2基本配置及应用

    本文将详细介绍如何在Spring4环境中配置和使用Quartz2来实现任务调度。 首先,我们需要在项目中引入Quartz2和Spring4的相关依赖。在`pom.xml`文件中,我们需要添加以下Maven依赖: ```xml &lt;!-- Spring framework...

    Spring Boot+Apache Shiro+Spring MVC+MyBatis+Quartz+Druid DEMO

    这是一个基于Spring Boot、Apache Shiro、Spring MVC、MyBatis、Quartz和Druid的数据源管理框架的示例项目,名为"renren-security"。这个DEMO提供了完整的权限管理和任务调度解决方案,下面是这些技术栈的核心知识点...

    Spingboot+Quartz基于数据库的作业任务调度

    Spring Boot和Quartz是两个流行的Java技术,它们可以协同工作,实现高效且可扩展的作业任务调度。下面我们将深入探讨这两个组件以及如何结合使用它们来基于数据库进行任务管理。 首先,Spring Boot是Spring框架的一...

    定时框架spring+quartz

    2. **配置Quartz**:在Spring的配置文件(如applicationContext.xml)中,定义Quartz的相关bean,包括SchedulerFactoryBean、JobDetail和Trigger。这些配置会告诉Quartz如何启动、何时运行以及运行哪些任务。 3. **...

    spring+quartz+maven项目实例

    - `src/main/java`:存放Java源代码,包括Spring的配置类、业务逻辑类以及Quartz的作业和触发器实现。 - `src/main/webapp`:如果是Web应用,这里将包含Web相关的资源,如`WEB-INF/web.xml`用于配置Servlet容器。 ...

    spring3+quartz1.6.4 集群示例

    在本示例中,Spring主要负责管理Quartz调度器的实例,通过配置文件或编程方式定义和管理定时任务。 2. **Quartz 1.6.4** Quartz 1.6.4 是一个开源的作业调度框架,它可以用来安排和执行周期性的任务。Quartz支持...

    Spring+Quartz 集群

    这包括`SchedulerFactoryBean`,用于初始化和管理Quartz调度器,以及`JobDetail`和`Trigger`,它们分别定义了任务和触发执行任务的规则。 3. **定义Job**:编写实现`org.quartz.Job`接口的类,这是实际执行的任务...

    spring+quartz demo

    在 Spring 的配置文件(如 `applicationContext.xml`)中,我们需要引入 Quartz 的配置,并声明一个 `SchedulerFactoryBean` 来实例化和配置 Quartz Scheduler。这通常包括定义数据源、JobDetail 和 Trigger。 2. ...

    Quartz + spring简单配置多个任务调度

    Quartz + spring简单配置多个任务调度 spring配置文件 简单配置

    Spring3.2.3+Quartz2.2 整合配置

    接下来,在Spring的配置文件(如`applicationContext.xml`)中,配置Quartz的SchedulerFactoryBean以及JobDetail和Trigger。下面是一个基本的配置示例: ```xml &lt;bean id="scheduler" class="org.springframework....

Global site tag (gtag.js) - Google Analytics