Spring 集成 Quartz 关键在于 Spring xml 的配置

ApplicationContext.xml

 

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:context="http://www.springframework.org/schema/context" 
  5.     xmlns:tx="http://www.springframework.org/schema/tx" 
  6.     xmlns:mvc="http://www.springframework.org/schema/mvc" 
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans 
  8.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
  9.     http://www.springframework.org/schema/context 
  10.     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
  11.     http://www.springframework.org/schema/tx 
  12.     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
  13.     http://www.springframework.org/schema/mvc 
  14.     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
  15.      
  16.       
  17.       
  18.     <!--方法一:java类需要继承QuartzJobBean,并将该类配置到配置文件中--> 
  19.     <!--获得JobDetail,java类需要继承QuartzJobBean--> 
  20.         <bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
  21.             <property name="jobClass" value="com.yazuo.study.quartz.JobByQuartz" /> 
  22.             <property name="jobDataAsMap"> 
  23.                 <map> 
  24.                     <entry key="timeout" value="5" /><!--属性 初始化值--> 
  25.                 </map> 
  26.             </property> 
  27.         </bean> 
  28.          
  29.     <!--获得 simpleTrigger,一种简单的触发器,通过设置任务进行相关操作-->        
  30.     <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
  31.         <property name="jobDetail" ref="exampleJob" /><!-- 设置参加作业调度的类--> 
  32.         <property name="startDelay" value="1000" /><!--设置开始时间--> 
  33.         <property name="repeatInterval" value="1000" /><!--多少时间执行一次--> 
  34.         <property name="repeatCount" value="10" /><!--总共执行次数--> 
  35.     </bean>  
  36.          
  37.     <!--方法二:类不需要继承QuartzJobBean,直接构建一个普通java类 --> 
  38.     <!--定义该java类实体--> 
  39.     <bean id="exampleBusinessObject" class="com.yazuo.study.quartz.JobOnly"/> 
  40.     <!--MethodInvokingJobDetailFactoryBean,完全屏蔽 quartz,只需要写个普通java类--> 
  41.     <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
  42.         <property name="targetObject" ref="exampleBusinessObject" /> 
  43.         <property name="targetMethod" value="doIt"/><!--该方法必须与java类中的方法名称一致--> 
  44.         <property name="concurrent" value="false" /><!--表示是否支持并发控制--> 
  45.     </bean>  
  46.      
  47.      
  48. <!--获得 CronTrigger:高级触发器,时间规则通过正则表达式实现  <property name="cronExpression" value="0/1 2 13 * * ?" />--> 
  49.     <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
  50.         <property name="jobDetail" ref="jobDetail" /> 
  51.         <!--cron 表达式,详见readme.txt--> 
  52.         <property name="cronExpression" value="0/5 * * * * ?" /> 
  53.     </bean> 
  54.      
  55.     <!--获得 SchedulerFactory--> 
  56.     <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" > 
  57.         <property name="triggers"> 
  58.             <list> 
  59.                 <ref bean="cronTrigger" /> 
  60.                 <!--可以添加多个触发器 
  61.                 <ref bean="simpleTrigger"/> 
  62.                 --> 
  63.             </list> 
  64.         </property> 
  65.     </bean> 
  66. </beans> 

 

  1. package com.yazuo.study.quartz; 
  2.  
  3. /** 
  4.  * 此作业使用org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean 
  5.  *不需要继承 QuartzJobBean,是一个普通的java类,只需要在applicationContext.xml中注册 doIt() 方法 
  6.  *  doIt()方法名称可以改变,但是必须要求配置文件与类中的文件名称统一 
  7.  * 
  8.  */ 
  9. public class JobOnly { 
  10.  
  11.     public void doIt() { 
  12.         System.out.println("test MethodInvokingJobDetailFactoryBean"); 
  13.     } 
  14.      

每隔5秒执行doIt() 方法!