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

spring中集成TimerTask执行定时任务

2012-10-08 10:41 155 查看
原文地址:/article/3761581.html

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

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

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: