spring中集成TimerTask执行定时任务 (转)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > spring中集成TimerTask执行定时任务 (转)

spring中集成TimerTask执行定时任务 (转)

 2013/8/27 18:55:34  tanzhen-1988  程序员俱乐部  我要评论(0)
  • 摘要:Spring对Timer的支持的核心是由ScheduledTimerTask和TimerFactoryBean类组成的。ScheduledTimerTask类是对TimerTask的包装器实现,这样你就可以为这个任务定义触发器信息。使用TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTaskbean自动创建Timer实例。1、自定义timerTask,比如:定时输出ServletContext中的信息
  • 标签:Spring 执行

Spring 对Timer的支持的核心是由ScheduledTimerTask和TimerFactoryBean类组成的。 ScheduledTimerTask类是对TimerTask的包装器实现,这样你就可以为这个任务定义触发器信息。使用 TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTask bean自动创建Timer实例。

1、自定义timerTask,比如:定时输出ServletContext中的信息,本例中输出项目的绝对路径(比如:D:\software\apache-tomcat-6.0.33\webapps\spring\)

monospace;">Java代码

public class BirthdayReminderTimerTask extends TimerTask implements ServletContextAware{

? /*通过实现ServletContextAware可获得servletContext*/

? private ServletContext servletContext;

? private static Logger logger = Logger.getLogger(BirthdayReminderTimerTask.class);

? @Override

? public void run() {

// ? ?logger.debug("BirthdayReminderTimerTask is running");

? ? setServletContext(servletContext);

? ? try {

? ? ? System.out.println(this.servletContext.getRealPath("/"));

? ? } catch (Exception e) {

? ? ? e.printStackTrace();

? ? }

? }

? public void setServletContext(ServletContext servletContext) {

? ? this.servletContext = servletContext; ? ?

? }

}

2、在spring的bean配置文件中配置,当系统加载该文件时,配置的定时器将自动启动,同时被spring管理。

?
Xml代码?

? ? <!--自定义任务--> ? ?

? ? ? ? <bean id="birthdayReminder" class="com.jep.task.BirthdayReminderTimerTask"></bean> ?

? ? ? ? ??

? ? ? ? <!-- ScheduledTimerTask类是对TimerTask的包装器实现,这样你就可以为这个任务定义触发器信息。 --> ?

? ? ? ? <bean id="birthdayReminderTimerTask" ?

? ? ? ? ? ? class="org.springframework.scheduling.timer.ScheduledTimerTask"> ?

? ? ? ? ? ? <!-- 设置启动延迟 --> ?

? ? ? ? ? ? <property name="delay"> ?

? ? ? ? ? ? ? ? <value>3000</value> ?

? ? ? ? ? ? </property> ?

? ? ? ? ? ? <!-- 后续延迟 --> ?

? ? ? ? ? ? <property name="period"> ?

? ? ? ? ? ? ? ? <value>5000</value> ?

? ? ? ? ? ? </property> ?

? ? ? ? ? ? <!-- 指定触发器信息 --> ?

? ? ? ? ? ? <property name="timerTask"> ?

? ? ? ? ? ? ? ? <ref local="birthdayReminder" /> ?

? ? ? ? ? ? </property> ?

? ? ? ? </bean> ?

? ? ? ? ??

? ? ? ? <!-- 使用TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTask bean自动创建Timer实例。 --> ?

? ? ? ? <bean id="timerFactory" ?

? ? ? ? ? ? class="org.springframework.scheduling.timer.TimerFactoryBean"> ?

? ? ? ? ? ? <property name="scheduledTimerTasks"> ?

? ? ? ? ? ? ? ? <list> ?

? ? ? ? ? ? ? ? ? ? <ref local="birthdayReminderTimerTask" /> ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? </list> ?

? ? ? ? ? ? </property> ? ? ? ? ?

? ? ? ? </bean> ?

3、对于web项目,需要在web.xml中进行如下配置?

Xml代码?

<!-- Spring ApplicationContext配置文件的路径此参数用于后面的Spring-Context loader -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:beans.xml</param-value>

</context-param>

? ? <!--Spring ApplicationContext 载入 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

?

转自:http://mzjwx.blog.163.com/blog/static/71678833201241044050249/

发表评论
用户名: 匿名