搭建环境是在MinWebEnvironment之上进行的
要与spring整合,需要spring-context-support.jar,
因为org.springframework.scheduling.quartz包在该jar中
使用quart需要导入的jar包
注意:quartz版本不能太低,我之前使用的是1.7就不行,使用了2.2.1就可以
添加的文件如图:
Task1.java文件内容:
1 package quartz.task; 2 3 public class Task1 { 4 private int num = 0; 5 public void sayHello(){ 6 System.out.println("hello,"+(++num)); 7 } 8 }
application-task.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:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd 10 http://www.springframework.org/schema/mvc 11 http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 12 13 <!-- 配置调度器工厂SchedulerFactoryBean 14 该bean的name可以不要,没有人为的引用他 15 --> 16 <bean name="myQuartzScheduler" 17 class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 18 <property name="triggers"> 19 <list> 20 <ref bean="myJobTrigger"/> 21 </list> 22 </property> 23 </bean> 24 25 <!-- 配置cron触发器 --> 26 <bean id="myJobTrigger" 27 class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 28 <property name="jobDetail"> 29 <ref bean="myJobDetail"/> 30 </property> 31 <property name="cronExpression"> 32 <value>0/3 * * * * ?</value> 33 </property> 34 </bean> 35 36 <!-- 配置方法调用任务工厂 --> 37 <bean id="myJobDetail" 38 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 39 <property name="targetObject"> 40 <ref bean="myJob"/> 41 </property> 42 <property name="targetMethod"> 43 <value>sayHello</value> 44 </property> 45 </bean> 46 47 <!-- 定义一个bean --> 48 <bean id="myJob" class="quartz.task.Task1"></bean> 49 50 <bean id="quartzAnno" class="quartz.task.QuartzAnno"/> 51 52 </beans>
运行结果:
在任务中同样可以使用spring注入,比如:
1 package quartz.task; 2 3 import javax.annotation.Resource; 4 5 public class Task1 { 6 7 @Resource 8 private QuartzAnno quartzAnno; 9 10 private int num = 0; 11 public void sayHello(){ 12 System.out.println("hello,"+(++num)); 13 quartzAnno.say(); 14 } 15 }