Spring 集成Quartz Scheduler 定时调度任务 Example

来源:互联网 发布:武汉java培训机构面授 编辑:程序博客网 时间:2024/04/28 23:25
<---------spring-quartz.xml------------------------------------------------------------------------------------------------------------------------------------------------------------------------><?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"><context:component-scan base-package="test.spring.quartz" /><!--配置 task.printInfo 将要执行的业务执行逻辑 --><bean id="simpleJobDetail"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="firstTask" /><property name="targetMethod" value="printInfo" /></bean><!-- 配置作业类complexJobDetail --><bean name="complexJobDetail"class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><!-- jobClass属性即我们在java代码中定义的任务实现类 --><property name="jobClass" value="test.spring.quartz.ScheduledJob" /><!-- jobDataAsMap属性即该任务类中需要注入的属性值 --><property name="jobDataMap"><map><entry key="secondTask" value-ref="secondTask" /></map></property><!-- 任务完成之后是否依然保留到数据库,默认false --><property name="durability" value="true" /><!-- 任务的名称 --><!-- <property name="name"></property> --><!-- 任务所在组 --><!-- <property name="group"></property> --></bean><!-- 简单的触发器,通过它我们可以定义触发的时间,并选择性的设定重复的次数和间隔时间 | 只支持按照一定频度调用任务,如每隔2秒运行一次 --><bean id="simpleTrigger"class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><property name="jobDetail" ref="simpleJobDetail" /><property name="startDelay" value="1000" />  <!-- 调度工厂实例化后,经过1秒开始执行调度 --><property name="repeatInterval" value="2000" /> <!-- 每2秒调度一次 --></bean><!-- 这个触发器的功能非常强大,而且非常灵活,需要掌握有关的Cron表达式知识 到指定时间运行一次 --><bean id="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><!-- 触发器名称 --><!-- <property name="name"></property> --><!-- 触发器组的名称 --><!-- <property name="group"></property> --><property name="jobDetail" ref="complexJobDetail" /><!-- 规则表达式 --><property name="cronExpression" value="0/5 * * ? * SAT-SUN" /><!--每5秒运行一次 --><!-- 开始时间,默认当前时间 --><!-- <property name="startTime"></property> --><!-- 延迟时间 --><!-- <property name="startDelay"></property> --><!-- 时区 --><!-- <property name="timeZone"></property> --></bean><!-- 配置调度工厂 --><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="jobDetails"><list><ref bean="simpleJobDetail" /><ref bean="complexJobDetail" /></list></property><property name="triggers"><list><ref bean="simpleTrigger" /><ref bean="cronTrigger" /></list></property></bean></beans>
/**   * @Title: MyBean.java * @Package test.spring.quartz.scheduling * @Description: * @author L* @date 2015年10月11日 上午9:34:15 * @version V1.0   */package test.spring.quartz.scheduling;import org.springframework.stereotype.Component;/** * @ClassName: outTask * @Description: * @author L * @date 2015年10月11日 上午9:34:15 *  */@Component("firstTask")public class FirstTask {public void printInfo() {System.out.println("隔2秒运行一次");}}
/**   * @Title: AnotherBean.java * @Package test.spring.quartz.scheduling * @Description: * @author L* @date 2015年10月11日 上午9:31:14 * @version V1.0   */package test.spring.quartz.scheduling;import org.springframework.context.support.AbstractApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Component;@Component("secondTask")public class SecondTask {/*** @Title: printAnotherMessage* @Description:*/public void printSecondTaskInfo() {System.out.println("每5秒运行一次");}@SuppressWarnings("unused")public static void main(String args[]) {@SuppressWarnings("resource")AbstractApplicationContext context = new ClassPathXmlApplicationContext("quartz-context.xml");}}
/**   * @Title: ScheduledJob.java * @Package test.spring.quartz * @Description: * @author L* @date 2015年10月11日 上午9:27:11 * @version V1.0   */package test.spring.quartz;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.springframework.scheduling.quartz.QuartzJobBean;import test.spring.quartz.scheduling.SecondTask;public class ScheduledJob extends QuartzJobBean {private SecondTask secondTask;@Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {secondTask.printSecondTaskInfo();// 要调度的具体任务}/*** @param secondTask*            the secondTask to set*/public void setSecondTask(SecondTask secondTask) {this.secondTask = secondTask;}}
0 0
原创粉丝点击