- 浏览: 518318 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
spring 任务调度总结
参考资料
http://www.ibm.com/developerworks/cn/java/j-quartz/
http://www.opensymphony.com/quartz/download.action
Java的Timer类和OpenSymphony的Quartz调度器是两个流行的调度API。Spring为这两个调度器提供了一个抽象层,可以更容易的使用他们
spring+timer
1 .使用java Timer调度任务
第一步 web.xml
<!--*********************** spring setting ***********************-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContextTimeTask.xml
</param-value>
</context-param>
第二步 配置applicationContextTimeTask.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--
****************使用java Timer调度任务*********************
使用java Timer调度第一步是从java.util.TimerTask派生一个任务
声明本身只是将EmailReportTask放到应用上下文,
并在testBean属性装配TestBean
在调度之前不会做任何事。
-->
<bean id="testBean" class="com.photo.test.TestBean"/>
<bean id="reportTimerTask" class="com.photo.task.EmailReportTask">
<property name="testBean">
<ref bean="testBean"/>
</property>
</bean>
<!--
Spring的ScheduledTimerTimerTask定义了一个定时器任务的运行周期。应该如下装配一个ScheduledTimerTask
timerTask告诉ScheduledTimerTask运行哪个TimerTask,
这里该装配属性指向reportTimerTask的一个引用。
属性period告诉ScheduledTimerTask以怎样的频率调用TimerTask的run()方法。
这个属性以毫秒作为单位,
86400000指定该任务每24小时运行一次
10X1000
属性scheduledTimerTasks 要求一个需要启动的定时器任务列表。
ScheduledTimerTask有一个delay属性, 允许你指定当任务第一次运行之前应该等多久。
如,EmailReportTask的第一次运行延迟5毫秒
-->
<bean id="scheduledReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="reportTimerTask"/>
</property>
<property name="period">
<value>10000</value>
</property>
<property name="delay">
<value>5000</value>
</property>
</bean>
<!--Spring 的TimerFactoryBean负责启动定时任务。按以下方式在Spring配置文件里声明它-->
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledReportTask"/>
</list>
</property>
</bean>
</beans>
第三步 相关类的编写
EmailReportTask.java
public class EmailReportTask extends TimerTask {//必需继承TimerTask
Log log= LogFactory.getLog(EmailReportTask.class);
public EmailReportTask() {
}
public void run() {//这个函数是调度任务执行的入口
log.debug("task begin :"+testBean.greeting);
}
private TestBean testBean;//这里实现spring的依赖注入
public void setTestBean(TestBean testBean) {
this.testBean = testBean;
}
}
testBean.java
public class TestBean {
public String greeting="hello,world";
}
spring+Quartz
Quartz 作业调度框架所提供的 API 在两方面都表现极佳:既全面强大,又易于使用。Quartz 可以用于简单的作业触发,也可以用于复杂的 JDBC 持久的作业存储和执行。
第一步 同上
第二步 配置applicationContextTimeTask.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.photo.task.EmailReportTask2</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="testBean">
<ref bean="testBean"/>
</entry>
</map>
</property>
</bean>
<!--用它来指定一个工作应以怎样的频率运行,及第一次运行工作前应等多久-->
<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="reportJob"/>
</property>
<property name="startDelay">
<value>3600000</value>
</property>
<property name="repeatInterval">
<value>86400000</value>
</property>
</bean>
<!--
CronTriggerBean允许更精确的控制任务的运行时间。如果要在每天的6:00运行任务可以按照以下方式声明一个CronTriggerBean
0 0 6 * * ?
jobDetail属性告诉触发器调度哪一个工作,属性cronExpression告诉触发器何时触发。一个cron表达式至少有6个由空格分隔的时间元素(最多7个)从左到右元素定义如下
1。秒(0-59)
2。分(0-59)
3。小时(0-23)
4。月份中的日期(1-31)
5。月份(1-12 或 JAN-DEC)
6。星期(1-7 或 SUN-SAT)
7。年份(1970-2099)
每一个元素都可以显示规定的一个值,一个区间(9-14),一个列表(9,12,14)或一个通配符(*)月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号(?)来表明不想设置那个字段
对于cronReportTrigger我们设置的cronExpression为 0 0 6 * * ?可以读作任意月份任何日期的6时0分0秒执行触发器
-->
<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="reportJob"/>
</property>
<property name="cronExpression">
<value>0/5 * * * * ?</value>
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronReportTrigger"/>
</list>
</property>
</bean>
</beans>
第三步 相关类的编写
EmailReportTask2.java
public class EmailReportTask2 extends QuartzJobBean {
Log log = LogFactory.getLog(EmailReportTask.class);
public EmailReportTask2() {
}
//这个函数是调度任务执行的入口
protected void executeInternal(JobExecutionContext jobExecutionContext) throws org.quartz.JobExecutionException {
log.debug("task 2 begin :" + testBean.greeting);
}
private TestBean testBean;//这里实现spring的依赖注入
public void setTestBean(TestBean testBean) {
this.testBean = testBean;
}
}
TestBean.java 同上
发表评论
-
cronExpression
2010-08-30 17:57 1188一个Cron-表达式是一个由六至七个字段组成由空格分隔的 ... -
spring 任务配置
2010-08-23 10:45 1201xml 代码 <bean id="i ... -
spring3.0注解式声明
2010-08-19 17:39 4369从spring2.5开始,annotation结合BeanPo ... -
Spring Roo 自动化集成开发工具
2010-08-04 14:54 2244Roo是一种 Spring 开发的辅助工具,使用命令行操作来生 ... -
spring3.0学习
2010-08-03 16:24 858https://src.springframework.org ... -
Spring mvc 转发、重定向
2010-07-28 16:53 2406spring控制器最后返回一个ModelAndView( ... -
spring api download
2010-07-28 08:43 1174在网上找了好多,都下不下来,要不就是需要注册登录什么的,才能下 ... -
Spring uploadFile
2010-05-02 20:45 2231先让我们来看一段摘自《Spring 2.5 Referen ... -
Spring_MVC(6)测试
2010-04-24 18:48 3722这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(5)业务层处理
2010-04-24 18:47 1983这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(4)持久层处理
2010-04-24 18:45 1199这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(3)表单页面处理
2010-04-24 18:43 3036// 跳转到用户信息页面 ... -
Spring_MVC(2)控制层处理
2010-04-24 18:42 1693言归正传,研究一下注解下的控制层。 我习惯于使用JSTL展示页 ... -
Spring_MVC(1)构建简单web应用
2010-04-24 18:40 1437Java代码 /** * 2010 ... -
spring实现文件上传
2010-04-24 15:15 1615Spring由内置的multipart支持web应用中的文件上 ... -
Spring MVC:使用InternalResourceViewResolver视图解析器
2010-02-24 09:14 2048参考:Sping 2.0.8\docs\MVC-step-by ... -
ibatis+spring控制事务配置
2009-04-05 10:25 1922<bean id="dataSource&qu ... -
转:spring事务控制配置实例
2009-04-03 10:47 3356Spring声明式事务配置的几种方法 在Spring中进 ... -
spring+ibatis+struts事务控制配置
2009-04-03 10:38 1558<?xml version="1.0" ... -
spring+ibatis+struts配置问题
2009-04-01 14:48 1125以下web.xml配置 <?xml version=&q ...
相关推荐
- **基本概念**:Spring Task是Spring框架的一部分,提供了基本的定时任务调度功能,包括`@Scheduled`注解用于标记定时任务,以及`TaskScheduler`和`ThreadPoolTaskScheduler`接口用于异步执行任务。 - **@...
Spring Task是Spring框架内置的任务调度模块,它提供了简单的定时任务执行能力。通过使用Spring Task,我们可以轻松地在应用中添加定时任务,而无需依赖其他外部库如Quartz或CronTrigger。 2. **`@Scheduled`注解*...
`TaskExecution`和`TaskScheduling`是Spring框架的基础任务调度API,它们允许开发者创建和执行简单的定时任务。`TaskExecution`接口提供了任务执行的核心功能,如启动、停止和查询任务状态,而`TaskScheduling`接口...
Spring通过其`Task`模块提供了任务调度的功能,主要由两个核心组件构成:`TaskExecutor`和`TaskScheduler`。`TaskExecutor`用于异步执行任务,而`TaskScheduler`则用于计划未来的任务执行。这两个接口提供了灵活的...
在IT行业中,Spring框架是Java开发中的重要组成部分,它提供了丰富的功能,其中之一就是任务调度。本篇文章将深入探讨Spring任务调度的实现方法,以及如何利用Quartz库来增强任务管理能力。 首先,让我们理解Spring...
《Spring任务调度配置详解:Spring+Quartz的整合应用》 在Java开发中,任务调度是不可或缺的一部分,Spring框架提供了与Quartz集成的能力,使得我们可以方便地管理和执行定时任务。本文将详细介绍如何通过Spring和...
Spring的定时任务调度主要依赖于两个关键组件:`TaskScheduler`和`TaskExecutor`。`TaskScheduler`用于计划未来的任务执行,而`TaskExecutor`则用于立即执行异步任务。在实际应用中,`@Scheduled`注解通常与`Spring ...
Spring提供了三种主要的任务调度实现方式:Spring内置的任务调度器(TaskScheduler),Quartz Scheduler,以及Spring Batch。下面我们将详细介绍这三种方式。 1. Spring内置的任务调度器(TaskScheduler) Spring...
Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`模块和第三方的Quartz库。下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是...
Spring框架提供了一个强大的任务调度模块——Spring Task,也被称为Spring Batch,它支持基于时间的任务调度和基于事件的任务触发。 首先,我们需要在`pom.xml`文件中添加Spring相关的依赖。这通常包括`spring-...
但如果只是简单的跑个任务其实spring升级到3后已经自带任务调度器了,相比之下Spring task无论是理解还是使用都简单很多。但是Quartz有线程和线程管理以及集群等高级特性,所以大家可以自行选择了。不过一般情况下,...
Spring Task,也称为Spring的内置任务调度框架,是Spring Framework的一部分,它提供了在Spring应用中定义和执行定时任务的能力。这个功能强大的工具使得开发者无需依赖外部任务调度库(如Quartz或Cron),就能在...
Spring 定时器 任务调度 怎么在项目中写定时任务 怎么配置一些环境
在IT行业中,Spring框架是Java领域最常用的轻量级开源框架之一,它的功能强大且全面,其中就包括了定时任务调度。本篇文章将探讨如何在Spring中实现定时调度,并将调度信息持久化到数据库中,这在实际业务场景中非常...
【Spring 任务调度】是Spring框架中用于自动化执行任务的功能,它允许开发者安排任务在特定时间或间隔执行,无需用户交互。任务调度在许多场景下都非常有用,比如定期备份数据库、执行系统统计、检查新邮件等。 1. ...
Spring Task和Zookeeper是两种在分布式环境中常用于任务调度的技术。Spring Task是Spring框架的一部分,提供了在Java应用程序中实现定时任务的能力,而Zookeeper则是一个分布式协调服务,常被用作分布式系统的配置...
Spring-task是Spring框架的一部分,它为开发者提供了强大的任务调度和执行功能,使得在Java应用中实现定时任务变得简单易行。本文将深入探讨Spring-task的注解方式和XML配置方式的使用,以及如何在实际项目中进行...
在Spring框架中,任务调度是实现应用程序后台处理和定时任务的关键功能。本篇文章将深入探讨两种不同的任务调度方式:基于`<task>`标签的配置和通过XML配置实现的任务。这两种方法都是Spring为开发者提供的强大工具...