congcongsuiyue 2011-03-23
第一步:在MyEclipse下建立一个项目Spring_Clock,导入相关jar包spring.jarcommons-collections.jar
commons-lang.jarcommons-logging.jarquartz.jar
第二步:新建立一个业务bean-->cn.yulon.service.MessageService
packagecn.yulon.service;
publicclassMessageService{
inti;
publicvoidprintLog(){
i++;
System.out.println("thisismytimer:"+i);
}
}
第三步:在Spring配置文件time-bean.xml,如下
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--第一步:配置好要定时调用的业务类-->
<beanid="msgService"class="cn.yulon.service.MessageService"/>
<!--第二步:定义好具体要使用类的哪一个业务方法-->
<beanid="workDetail"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--目标bean-->
<propertyname="targetObject"ref="msgService"/>
<!--要执行目标bean的哪一个业务方法-->
<propertyname="targetMethod"value="printLog"/>
<!--是否并发-->
<propertyname="concurrent"value="false"/>
</bean>
<!--第三步:定义好调用模式:如每隔1秒钟调用一次或每天的哪个时间调用一次等-->
<beanid="msgTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean">
<propertyname="jobDetail"ref="workDetail"/>
<propertyname="cronExpression"value="0/1****?"/>
</bean>
<!--第四步把定义好的任务放到调度(Scheduler)工厂里面,注意这里的refbean-->
<beanclass="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<propertyname="triggers">
<list>
<refbean="msgTrigger"/>
</list>
</property>
</bean>
</beans>
在xml里配置值得关注的是<propertyname="cronExpression"value="0/1****?"/>表示每隔一秒钟执行一次,例子如下:
0010,14,16**?每天上午10点,下午2点和下午4点
00,15,30,45*1-10*?每月前10天每隔15分钟
300011?2012在2012年1月1日午夜过30秒时
008-5?*MON-FRI每个工作日的工作时间
-区间
*通配符
?你不想设置那个字段
第四步:新建测试类SpringTest
Java代码
1.publicclassSpringTest{
2.
3.publicstaticvoidmain(String[]args){
4.
5.ApplicationContextact=newClassPathXmlApplicationContext("time-bean.xml");
6.}
publicclassSpringTest{
publicstaticvoidmain(String[]args){
ApplicationContextact=newClassPathXmlApplicationContext("time-bean.xml");
}
运行结果如下:
Xml代码
1.thisismytimer:1
2.thisismytimer:2
3.thisismytimer:3
4.thisismytimer:4
5.thisismytimer:5