最近研究站内搜索,因为要定时的更新索引库,看了看Spring+Quartz定时任务,用它完成,定时创建索引的任务!!

给大家分享一下helloworld的简单例子,大家可以根据实际情况变化使用

业务方法类

Java代码  Spring+Quartz定时任务_休闲
  1. package com.task;  
  2.   
  3. /** 
  4.  * 业务方法 
  5.  *  
  6.  */  
  7. public class TestJob {  
  8.     public void execute() {  
  9.         try {  
  10.             System.out.println("我的业务方法被调用了---------!");  
  11.         } catch (Exception ex) {  
  12.             ex.printStackTrace();  
  13.         }  
  14.     }  
  15. }  


配置文件beans.xml

Java代码  Spring+Quartz定时任务_休闲
  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:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xmlns:tx="http://www.springframework.org/schema/tx"  
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  8.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  9.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
  10.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  11.            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
  12.     <!-- 普通的业务Bean -->  
  13.     <bean id="testJob" class="com.task.TestJob" />  
  14.     <!-- 触发器 -->  
  15.     <bean  
  16.         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  17.         <property name="triggers">  
  18.             <list>  
  19.                 <ref bean="testTrigger" />  
  20.             </list>  
  21.         </property>  
  22.         <property name="autoStartup" value="true" />  
  23.     </bean>  
  24.     <bean id="testTrigger"  
  25.         class="org.springframework.scheduling.quartz.CronTriggerBean">  
  26.         <property name="jobDetail" ref="testJobDetail" />  
  27.         <!-- 每隔1秒钟触发一次 -->  
  28.         <property name="cronExpression" value="*/1 * * * * ?" />  
  29.     </bean>  
  30.     <!-- 计划 -->  
  31.     <bean id="testJobDetail"  
  32.         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
  33.         <property name="targetObject" ref="testJob" />  
  34.         <property name="targetMethod" value="execute" />  
  35.         <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->  
  36.         <property name="concurrent" value="false" />  
  37.     </bean>  
  38. </beans>  


测试方法

Java代码  Spring+Quartz定时任务_休闲
  1. package com.task;  
  2.   
  3. import org.springframework.context.support.AbstractApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. /**  
  7.  * 测试类  
  8.  *  
  9.  */  
  10.   
  11. public class Test {  
  12.     public static void main(String[] args) {  
  13.         try {  
  14.             AbstractApplicationContext context = new ClassPathXmlApplicationContext("com/task/beans.xml");  
  15.         } catch (Exception e) {  
  16.             // TODO Auto-generated catch block  
  17.             e.printStackTrace();  
  18.         }  
  19.         System.out.println("Main方法执行开始了! 定时器伴随着Spring的初始化执行了。。。");  
  20.         System.out.println("Main方法执行结束了!");  
  21.     }  
  22. }  


我在运行调试的时候遇到了一些错误,比如:


Java代码  Spring+Quartz定时任务_休闲
  1. Error creating bean with name 'testJobDetail' defined in class path resource [com/task/beans.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/collections/SetUtils  


这个错误是因为工程中缺少必要的commons-collections-3.2.1.jar包引起的,另外必须的jar包还有quartz-1.6.4.jar,spring.jar,commons-logging.jar