前言
Quartz是一个开源的定时调度框架,支持集群部署。在很多实际业务中都能够运用的到。
首先需要搭建好SpringMVC的程序框架
一、 定义需要定时执行的类和具体方法
二、配置Spring定时器工厂,并创建一个定时器Triggerpackage cn.framework.utils.quartz; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cn.framework.utils.DateUtils; /** * 测试定时器类 * * @author YANGHUAN */ public class TestQuartz { public static Logger logger = LoggerFactory.getLogger(TestQuartz.class); /** * 被定时调用的方法 */ public void execute(){ System.out.println("TIME[" + DateUtils.getStringDate() + "] 正在运行中....."); } }
TestQuartz.java 中的execute()是我们需要定时执行的代码块。
ApplicationContext-quartz-loacl.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd" default-lazy-init="true"> <description>Quartz的本地Cron式执行任务配置</description> <bean id="TestQuartz" class="cn.framework.utils.quartz.TestQuartz" /> <!-- 配置定时器调度工厂 --> <bean id="localQuartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- Trigger集成 --> <property name="triggers"> <list> <ref bean="testTaskTrigger"/> </list> </property> <!-- Quartz配置, 本地运行无需单独的quartz.properties文件,在此简单配置即可 --> <property name="quartzProperties"> <props> <!-- 最大线程数 为5个 --> <prop key="org.quartz.threadPool.threadCount">5</prop> </props> </property> <!-- 启动时延期2秒开始任务 --> <property name="startupDelay" value="2" /> </bean> <!-- 选其下面任一格式都可 --> <!-- 配置定时表达式 格式1 --> <bean id="testTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- 指定定时器 --> <property name="jobDetail" ref="testTaskJobDetail"/> <!-- 配置执行时间 cron表达式执行 每10秒钟执行一次--> <property name="cronExpression" value="*/10 * * * * ?" /> </bean> <!-- 配置定时表达式 格式2 --> <bean id="testTaskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> <property name="jobDetail" ref="testTaskJobDetail" /> <!-- 实例化对象后2秒 启动执行 --> <property name="startDelay" value="2000" /> <!-- 间隔10秒执行一次 --> <property name="repeatInterval" value="10000" /> </bean> <!-- 配置定时器调用类 --> <bean id="testTaskJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 执行类的Bean --> <property name="targetObject" ref="TestQuartz"/> <!-- 执行类的方法Method --> <property name="targetMethod" value="execute"/> <!-- 同一任务在前一次执行未完成而Trigger时间又到时是否并发开始新的执行, 默认为true 并发执行. --> <property name="concurrent" value="true"/> </bean> </beans>
在contextConfigLocation配置文件中 import 即可
<import resource="schedule/applicationContext-quartz-local.xml" />
启动Tomcat即可定时执行任务。