闲着写了一个Spring定时任务的小例子,也积累一下,免得做Android开发把JavaEE的都忘记了!下面是Spring定时任务的代码:
这个是一个很简单的MyTime类,里面有一个方法就是得到当前时间并且打印出来
package com.zhangkeinfo.spring.time;
import java.sql.Timestamp;
/**
* spring 定时任务
* @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 定时任务
* @author spring sky
* Email:vipa1888@163.com
* QQ:840950105
* #####spring 定时任务需要继承QuartzJobBean 这种方式是最常用的!
* #####同时就实现了抽象方法executeInternal
*
*/
public class UpdateTime extends QuartzJobBean{
private MyTime myTime;
/**
* 依赖注入myTime
* @param myTime
*/
public void setMyTime(MyTime myTime) {
this.myTime = myTime;
}
/**
* 我在这个定时任务里面只做了一个很简单的事情,就是打印出当前的时间!
*/
@Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
myTime.getTime();
}
}
上面需要注意的是参数:context,这个参数有很大的作用,就是可以得到一些重要的值,context有一个get(key)方法,这个就是可以得到一个需要的数据!
applicationContext.xml中的配置:
<!-- spring定时任务的配置 -->
<bean class="com.zhangkeinfo.spring.time.MyTime" id="myTime"/>
<!-- 基础的配置 相关类的注入 -->
<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"> <!-- 当定时任务中需要注入别的bean的时候,就可以在这里注入,我里面输入了一个MyTime类 -->
<map>
<entry key="myTime" value-ref="myTime"/>
</map>
</property>
</bean>
<!-- 相关的时间配置 -->
<bean class="org.springframework.scheduling.quartz.SimpleTriggerBean" id="MyTimesimpleTriggerBean">
<property name="jobDetail" ref="MyTimeSpringJob"/> <!-- 给MyTimeSpringJob配置时间信息,name的jobDetail是spring内部需要注入的名字 -->
<property name="repeatInterval" value="1000"/> <!--相隔1000毫秒执行一次 -->
<property name="startDelay" value="5000"/> <!--tomcat或者jboss启动5000毫秒后开始执行任务 -->
</bean>
<!--
当前注释的内容配置的功能很强大,还可以配置星期几,哪一天,那一年,或者那一日的那一秒都是可以配置的
当前配置的是:每个周的星期天23:59:50 这个顺序是倒序配置的
value中的内容:
第6位:的1代表星期天,在国外星期天才是每个周的开始!
第5位: *代表所有月的星期天
第4位:?代表也没有具体到某日的星期天
第3位:23代表23点,注意:采用24小时
第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>
-->
<!-- ****************启动定时任务***************** -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="MyTimesimpleTriggerBean"/>
</list>
</property>
</bean>
上面的spring xml文件中的基本配置,我已经详细说明了里面的参数,学习也在于积累,只有积累了,才会不断的成长!