public class QuartzJob { public void work() { System.out.println(Spring Quartz的任务调度1被调用!"); //定时调用的业务逻辑 } } public class QuartzJob2 { public void work() { System.out.println(Spring Quartz的任务调度2被调用!"); //定时调用的业务逻辑 } }
Spring的配置文件
<?xml version="1.0" encoding="UTF-8"?> <!-- - Application context definition for JPetStore's business layer. - Contains bean references to the transaction manager and to the DAOs in - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation"). --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <!-- 要调用的工作类 --> <bean id="quartzJob" class="com.writchie.quartz.QuartzJob"></bean> <bean id="quartzJobTwo" class="com.writchie.quartz.QuartzJobTwo"></bean> <!-- 可继续加新的任务 --> <!-- 要调用的工作类结束 --> <!-- 定义调用对象和调用对象的方法 --> <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject"> <ref bean="quartzJob"/> </property> <!-- 调用类中的方法 --> <property name="targetMethod"> <value>work</value> </property> </bean> <bean id="jobtask2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject"> <ref bean="quartzJobTwo"/> </property> <!-- 调用类中的方法 --> <property name="targetMethod"> <value>work</value> </property> </bean> <!-- 可继续加新的 --> <!-- 定义调用对象和调用对象的方法结束 --> <!-- 定义触发时间 --> <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="jobtask"/> </property> <!-- cron表达式 此处定义为一直触发执行任务 --> <property name="cronExpression"> <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value> </property> </bean> <bean id="doTime2" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="jobtask2"/> </property> <!-- cron表达式 此处定义周一至周日的下午13:15触发--> <property name="cronExpression"> <value>0 15 13 ? * SUN-SAT</value> </property> </bean> <!-- 可继续加新的 --> <!-- 定义触发时间结束 --> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime"/> <ref bean="doTime2"/> <!-- 可继续加新的 --> </list> </property> </bean> <!-- 总管理类结束 --> </beans> 测试程序 import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class QuartzService { public static void main(String[] args) { System.out.println("测试任务调度开始..."); ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); // 如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化 // context.getBean("startQuertz"); System.out.print("测试任务调度结束!\n"); } }