Spring定時(shí)任務(wù)小例子
閑著寫了一個(gè)Spring定時(shí)任務(wù)的小例子,也積累一下,免得做Android開發(fā)把JavaEE的都忘記了!下面是Spring定時(shí)任務(wù)的代碼:
這個(gè)是一個(gè)很簡(jiǎn)單的MyTime類,里面有一個(gè)方法就是得到當(dāng)前時(shí)間并且打印出來(lái)
- package com.zhangkeinfo.spring.time;
- import java.sql.Timestamp;
- /**
- * spring 定時(shí)任務(wù)
- * @author spring sky
- * Email:vipa1888@163.com
- * QQ:840950105
- *
- */
- public class MyTime {
- public void getTime()
- {
- Timestamp tt = new Timestamp(System.currentTimeMillis());
- System.out.println(tt.toString());
- }
- }
核心的代碼:
- package com.zhangkeinfo.spring.time;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- import org.springframework.scheduling.quartz.QuartzJobBean;
- /**
- * spring 定時(shí)任務(wù)
- * @author spring sky
- * Email:vipa1888@163.com
- * QQ:840950105
- * #####spring 定時(shí)任務(wù)需要繼承QuartzJobBean 這種方式是最常用的!
- * #####同時(shí)就實(shí)現(xiàn)了抽象方法executeInternal
- *
- */
- public class UpdateTime extends QuartzJobBean{
- private MyTime myTime;
- /**
- * 依賴注入myTime
- * @param myTime
- */
- public void setMyTime(MyTime myTime) {
- this.myTime = myTime;
- }
- /**
- * 我在這個(gè)定時(shí)任務(wù)里面只做了一個(gè)很簡(jiǎn)單的事情,就是打印出當(dāng)前的時(shí)間!
- */
- @Override
- protected void executeInternal(JobExecutionContext context)
- throws JobExecutionException {
- myTime.getTime();
- }
- }
上面需要注意的是參數(shù):context,這個(gè)參數(shù)有很大的作用,就是可以得到一些重要的值,context有一個(gè)get(key)方法,這個(gè)就是可以得到一個(gè)需要的數(shù)據(jù)!
applicationContext.xml中的配置:
- <!-- spring定時(shí)任務(wù)的配置 -->
- <bean class="com.zhangkeinfo.spring.time.MyTime" id="myTime"/>
- <!-- 基礎(chǔ)的配置 相關(guān)類的注入 -->
- <bean class="org.springframework.scheduling.quartz.JobDetailBean" id="MyTimeSpringJob">
- <property name="jobClass" value="com.zhangkeinfo.spring.time.UpdateTime"/> <!-- value中配置的是我自己寫的UpdateTime類 name就是spring的jobClass -->
- <property name="jobDataAsMap"> <!-- 當(dāng)定時(shí)任務(wù)中需要注入別的bean的時(shí)候,就可以在這里注入,我里面輸入了一個(gè)MyTime類 -->
- <map>
- <entry key="myTime" value-ref="myTime"/>
- </map>
- </property>
- </bean>
- <!-- 相關(guān)的時(shí)間配置 -->
- <bean class="org.springframework.scheduling.quartz.SimpleTriggerBean" id="MyTimesimpleTriggerBean">
- <property name="jobDetail" ref="MyTimeSpringJob"/> <!-- 給MyTimeSpringJob配置時(shí)間信息,name的jobDetail是spring內(nèi)部需要注入的名字 -->
- <property name="repeatInterval" value="1000"/> <!--相隔1000毫秒執(zhí)行一次 -->
- <property name="startDelay" value="5000"/> <!--tomcat或者jboss啟動(dòng)5000毫秒后開始執(zhí)行任務(wù) -->
- </bean>
- <!--
- 當(dāng)前注釋的內(nèi)容配置的功能很強(qiáng)大,還可以配置星期幾,哪一天,那一年,或者那一日的那一秒都是可以配置的
- 當(dāng)前配置的是:每個(gè)周的星期天23:59:50 這個(gè)順序是倒序配置的
- value中的內(nèi)容:
- 第6位:的1代表星期天,在國(guó)外星期天才是每個(gè)周的開始!
- 第5位: *代表所有月的星期天
- 第4位:?代表也沒(méi)有具體到某日的星期天
- 第3位:23代表23點(diǎn),注意:采用24小時(shí)
- 第2位:59代表分鐘
- 第1位:50代表秒
- <bean class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail" ref="MyTimeSpringJob"/>
- <property name="cronExpression" value="50 59 23 ? * 1"/>
- </bean>
- -->
- <!-- ****************啟動(dòng)定時(shí)任務(wù)***************** -->
- <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list>
- <ref bean="MyTimesimpleTriggerBean"/>
- </list>
- </property>
- </bean>
上面的spring xml文件中的基本配置,我已經(jīng)詳細(xì)說(shuō)明了里面的參數(shù),學(xué)習(xí)也在于積累,只有積累了,才會(huì)不斷的成長(zhǎng)!
原文鏈接:http://blog.csdn.net/vipa1888/article/details/7098405
【編輯推薦】