您的位置:首页 > 编程语言 > Java开发

spring定时任务Quartz

2016-01-04 16:40 302 查看
在开发中使用到一种场景,需要在每天凌晨计算昨天一天的数据,这会可以用定时器来解决。

定时器可以用jdk自带的Timer,也可以使用spring集成的Quartz,这里描述Quartz的使用。

首先依赖pom:

<dependency>
<groupId>org.opensymphony.quartz</groupId>
<artifactId>quartz-all</artifactId>
<version>1.6.1</version>
</dependency>


写业务类:(业务类无需实现任何接口和继承类)

public class Jobs {
public  void worker() {
System.out.println(DateUtil.getCurrentTime()+"worker ....");
}
}


在spirng.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-3.0.xsd"> 
<bean id="jobs" class="com.jd.jr.search.box.Test.Jobs">
</bean>
<!-- 定义jobTask-->
<bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类-->
<property name="targetObject" ref="jobs"></property>
<!-- 调用的方法-->
<property name="targetMethod" value="worker"></property>
</bean>
<!-- 定义触发时间-->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 将jobtask加载进去-->
<property name="jobDetail" ref="jobTask"></property>
<!-- 定义cron表达式-->
<property name="cronExpression">
<value>0 */5 * * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
<bean id="startQuartz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime"/>
</list>
</property>
</bean>
</beans>


运行Jobs方法即启动定时器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: