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

Spring的quartz实现定时器功能

2011-06-24 14:51 351 查看
1.导入相应需要的java包:



2.写一个需要定时被执行的方法:TargetObject.java

package com.yjpeng.spring.scehudle;

import java.text.SimpleDateFormat;
import java.util.Date;

public class TargetObject {
public void run(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String executeDate = format.format(new Date());
System.out.println(executeDate + "run方法执行了");
}
}


3. 修改Spring的配置文件:applicationContext.xml

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 需要执行定时任务类 -->
<bean id="targetObject"
class="com.yjpeng.spring.scehudle.TargetObject" />

<!-- 定义定时执行SCheduleTimer类中的run方法 -->
<bean id="ScheduleTimer"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="targetObject" />
<property name="targetMethod" value="run" />
</bean>
<!-- 触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail,即触发器去触发哪个bean。并且我们还要定义触发的时间 -->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="ScheduleTimer" />
<property name="cronExpression">
<!-- 表达式这么配置,意思是每一分钟触发一次依次表示 秒(0-59) 分(0-59) 时(0-23)  日(1-31) 月(1-12) 星期(1-7) 年(1970-2099) -->
<value>* * * * * ?</value>
</property>
</bean>

<!-- 管理触发器的总设置,可以放置多个触发器 -->
<bean autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
</beans>


4.通过加载该配置文件来执行该定时任务:

new ClassPathXmlApplicationContext("applicationContext.xml");

最后的结果是:

2011-06-24 14:51:45run方法执行了
2011-06-24 14:51:45run方法执行了
2011-06-24 14:51:46run方法执行了
2011-06-24 14:51:47run方法执行了
2011-06-24 14:51:48run方法执行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: