spring中集成TimerTask执行定时任务 中配置文件的配置
2015-06-12 18:25
696 查看
在spring的bean配置文件中配置,当系统加载该文件时,配置的定时器将自动启动,同时被spring管理。
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管理。
<!--自定义任务-->
<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中进行如下配置
<!-- 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>
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管理。
<!--自定义任务-->
<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中进行如下配置
<!-- 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>
相关文章推荐
- Eclipse中如何将Java项目转换为WEB项目
- tinkerpop(2) 使用java调用tinkerpop,存储到derby数据库
- 第二天,Java_Day02
- SpringMVC Controller 介绍
- java 多线程编程三种实现方式
- Java泛型集合
- 对于JAVAWeb开发的最新解
- SpringMVC视图解析器技术2
- Java正则表达式入门
- 解决:eclipse导入项目不显示svn信息
- Java并发编程-03-守护线程的创建和运行
- java门禁系统面向对象程序设计
- SpringMVC视图解析器(1)
- java根据图片和文字生成自定义图片
- Java 多线程同步和异步详解
- 文件上传--基于Spring MVC框架+SmartUpload
- 文件上传--基于Spring MVC框架+SmartUpload
- java设计模式(八)---外观模式
- 开源中国GIT中Java分类下TOP10项目的活动情况分析
- java 线程池