Spring 集成 Quartz 关键在于 Spring xml 的配置
ApplicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
- <!--方法一:java类需要继承QuartzJobBean,并将该类配置到配置文件中-->
- <!--获得JobDetail,java类需要继承QuartzJobBean-->
- <bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean">
- <property name="jobClass" value="com.yazuo.study.quartz.JobByQuartz" />
- <property name="jobDataAsMap">
- <map>
- <entry key="timeout" value="5" /><!--属性 初始化值-->
- </map>
- </property>
- </bean>
- <!--获得 simpleTrigger,一种简单的触发器,通过设置任务进行相关操作-->
- <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
- <property name="jobDetail" ref="exampleJob" /><!-- 设置参加作业调度的类-->
- <property name="startDelay" value="1000" /><!--设置开始时间-->
- <property name="repeatInterval" value="1000" /><!--多少时间执行一次-->
- <property name="repeatCount" value="10" /><!--总共执行次数-->
- </bean>
- <!--方法二:类不需要继承QuartzJobBean,直接构建一个普通java类 -->
- <!--定义该java类实体-->
- <bean id="exampleBusinessObject" class="com.yazuo.study.quartz.JobOnly"/>
- <!--MethodInvokingJobDetailFactoryBean,完全屏蔽 quartz,只需要写个普通java类-->
- <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject" ref="exampleBusinessObject" />
- <property name="targetMethod" value="doIt"/><!--该方法必须与java类中的方法名称一致-->
- <property name="concurrent" value="false" /><!--表示是否支持并发控制-->
- </bean>
- <!--获得 CronTrigger:高级触发器,时间规则通过正则表达式实现 <property name="cronExpression" value="0/1 2 13 * * ?" />-->
- <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail" ref="jobDetail" />
- <!--cron 表达式,详见readme.txt-->
- <property name="cronExpression" value="0/5 * * * * ?" />
- </bean>
- <!--获得 SchedulerFactory-->
- <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
- <property name="triggers">
- <list>
- <ref bean="cronTrigger" />
- <!--可以添加多个触发器
- <ref bean="simpleTrigger"/>
- -->
- </list>
- </property>
- </bean>
- </beans>
- package com.yazuo.study.quartz;
- /**
- * 此作业使用org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
- *不需要继承 QuartzJobBean,是一个普通的java类,只需要在applicationContext.xml中注册 doIt() 方法
- * doIt()方法名称可以改变,但是必须要求配置文件与类中的文件名称统一
- *
- */
- public class JobOnly {
- public void doIt() {
- System.out.println("test MethodInvokingJobDetailFactoryBean");
- }
- }
每隔5秒执行doIt() 方法!