Spring配置Quartz简单实现

前言
Quartz是一个开源的定时调度框架,支持集群部署。在很多实际业务中都能够运用的到。

首先需要搭建好SpringMVC的程序框架         


一、 定义需要定时执行的类和具体方法

package 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()是我们需要定时执行的代码块。


二、配置Spring定时器工厂,并创建一个定时器Trigger

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即可定时执行任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值