Spring4.1.1.RELEASE和quartz2.1.7整合

一、添加必要的jar
spring的maven依赖jar(自己加上即可)
quartz的依赖jar

<dependency>
   <groupId>org.quartz-scheduler</groupId>
   <artifactId>quartz</artifactId>
   <version>2.1.7</version>
 </dependency>

二 开发定时任务
方式一:

package com.test.quartz;
import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class TaskOne extends QuartzJobBean {
 
 protected static final Logger log=Logger.getLogger(TaskOne.class);
 
 private int timeout;
    /**
     * Setter called after the ExampleJob is instantiated
     * with the value from the JobDetailBean (5)
     */
    public void setTimeout(int timeout) {
        this.timeout = timeout;
    }
 
 @Override
 protected void executeInternal(JobExecutionContext arg0)
   throws JobExecutionException {
  log.info("-----TaskOne 定时任务执行-----timeost="+timeout);
  
 }
}

方式二:

package com.test.quartz;
import org.apache.log4j.Logger;

public class TaskTwo {

 protected static final Logger log=Logger.getLogger(TaskTwo.class);
 
 public void doIt(){
  log.info("-----TaskTwo定时任务执行-----");
 }
}

三、spring配置文件添加配置

<!-- 定时任务开始 -->
    <!-- 方式1 -->
    <bean id="exampleJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
     <!-- 目标类-->
     <property name="jobClass" value="com.test.quartz.TaskOne"></property>
     <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>
    <property name="repeatCount">
      <value>8</value>
    </property>
    <property name="repeatInterval">
      <value>1000</value>
    </property>
    <property name="startDelay">
      <value>4</value>
    </property>
  </bean> 
  -->
 <bean id="cronTrigger"
  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
  <property name="jobDetail" ref="exampleJob" />
  <!-- run every morning at 6 AM -->
  <!-- <property name="cronExpression" value="0 0 6 * * ?" /> -->
  <!-- <property name="cronExpression" value="0 0/1 * * * ?" /> --> <!-- 每分钟 -->
  <property name="cronExpression" value="0/2 * * * * ?" /> <!-- 每秒 -->
 </bean>
 <!-- 方式2 -->
 <bean id="exampleBusinessObject" class="com.test.quartz.TaskTwo" />
 <bean id="jobDetail"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="exampleBusinessObject" />
  <property name="targetMethod" value="doIt" />
  <property name="concurrent" value="false" />
 </bean>
 <bean id="simpleTrigger"
  class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
  <!-- see the example of method invoking job above -->
  <property name="jobDetail" ref="jobDetail" />
  <!-- 10 seconds -->
  <property name="startDelay" value="4000" />
  <!-- repeat every 50 seconds -->
  <property name="repeatInterval" value="5000" />
 </bean>
 <!-- 总调度用于启动Spring定时器 -->
 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
   <list>
    <ref bean="cronTrigger" />
    <ref bean="simpleTrigger" />
   </list>
  </property>
 </bean>
    <!-- 定时任务结束 -->

注意:spring4.1.1的spring-context-support-4.1.1.RELEASE.jar中已经没有JobDetailBean,需要使用JobDetailFactoryBean替代;

你可能感兴趣的:(spring,quartz)