- 浏览: 3008905 次
- 性别:
- 来自: 河南
文章分类
- 全部博客 (340)
- Java综合 (26)
- 程序人生 (53)
- RIA-ExtJS专栏 (18)
- RIA-mxGraph专栏 (4)
- RIA-Flex4专栏 (43)
- 框架-Spring专栏 (16)
- 框架-持久化专栏 (22)
- 框架-Struts2专栏 (11)
- 框架-Struts专栏 (12)
- SQL/NOSQL (12)
- 报表/图表 (2)
- 工作流 (5)
- XML专栏 (4)
- 日常报错解决方案 (5)
- Web前端-综合 (12)
- Web/JSP (14)
- Web前端-ajax专栏 (14)
- Web前端-JQuery专栏 (9)
- IDE技巧 (6)
- FILE/IO (14)
- 远程服务调用 (2)
- SSO单点登录 (2)
- 资源分享 (22)
- 云计算 (1)
- 项目管理 (3)
- php专栏 (1)
- Python专栏 (2)
- Linux (1)
- 缓存系统 (1)
- 队列服务器 (1)
- 网络编程 (0)
- Node.js (1)
最新评论
-
hui1989106a:
我的也不能解压,360和好压都试了,都不行
《Spring in Action》完整中文版分享下载 -
temotemo:
这些example有些过时了,官方建议使用HBase-1.0 ...
Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询 -
zy8102:
非常感谢~
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
重命名了一下搞定了
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
为什么下载以后老解压不了呢?
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载
实际项目中有关定时任务的使用还是比较普遍的,比如定时做报表,定时取数据,定时发送邮件等等,不过我们熟悉的并且比较方便的要么就是TimerTask要么就是Quartz,不过要按方便来讲和使用率来讲,大家还是普遍愿意在实际项目中使用更优秀的Quartz,尤其是和Spring配合起来十分方便,不过TimerTask也可以配置在Spring中
首先还是讲Quartz吧,之前大家都知道在不需要框架的项目中,我们的定时任务通常将执行代码写入到servlet的init方法中,然后在web.xml中配置
<servlet>
<servlet-name>Init</servlet-name>
<servlet-class>
com.cn.util.timer.TestTimerTaskServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
这样的代码,只要服务器一直在开启状态,就会按时执行任务的
一般来说Quart中有几个比教重要的概念:定时任务,触发器Trigger,调度器Scheduler,并且定时任务需要传入一个具体执行任务的类,这个类必须继承import org.quartz.Job这个类,并且实现execute这个方法,至于execute方法里面就是功能代码了,就是上面提到的统计报表,获取数据,发送邮件之类的事情了,欲了解更多的在Java中使用Quartz的知识请参考我很久以前写的有关Quartz的文章。
Spring和Quartz的整合
必须包
首先说一种不必继承任何类的具体定时任务的执行类JobTask.java
package com.javacrazyer.comon;
public class JobTask {
public void doJob(){
System.out.println("执行发送邮件的程序...");
}
}
那么这个具体实现功能的类就没有继承任何其他第三方类
Spring的配置文件applicationContext.xml具体配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="jobTask" class="com.javacrazyer.comon.JobTask"></bean>
<!-- 定义JobDetail 具体的要执行的目标BEAN和执行的目标方法-->
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--引用实际目标bean-->
<property name="targetObject" ref="jobTask" />
<!--目标bean中的目标方法:doJob方法,意思为将来执行定时任务就是该bean中的doJob方法-->
<property name="targetMethod" value="doJob" />
</bean>
<!-- 使用triggers和SchedulerFactoryBean来包装任务 -->
<!--定义触发的时间-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail" />
<!-- cron表达式 秒 分 时 日 月 周 (年) -->
<property name="cronExpression" value="0/15 * * * * ?" />
</bean>
<!-- 管理触发器,就相当于在java中使用Quartz代码中的调度器scheduler -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
</beans>
有关cron表达式的的我之前的文章介绍过
大家发现没有JobDetail 那里配置指明了类,还必须指明具体要执行的方法,具体原因是MethodInvokingJobDetailFactoryBean这个类配置里面必须要求同时配上类和方法,所以我之前的类就没有继承任何类。
那么,如果有人懒得配置方法的话,还想按Quartz正常道路来走的话,那么具体执行类要变化了
package com.javacrazyer.comon;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class JobTask extends QuartzJobBean{
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println("执行发送邮件的程序...");
}
}
并且spring配置中个JobDetail那个bean的整体换成
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.javacrazyer.comon.JobTask</value>
</property>
</bean>
像这样两种方式的都可以进行执行了,根据个人喜好,想选哪个都可以
web.xml大家再熟悉不过了,还是写下吧
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Spring ApplicationContext Definition -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
好了部署项目吧,启动tomcat吧,看看control控制台是不是每隔15秒就输出
执行发送邮件的程序...
差点忘记还有TimerTask跟Spring的结合的配置,需要一个实现的具体类
package com.javacrazyer.comon;
import java.util.TimerTask;
public class EamilTask extends TimerTask{
@Override
public void run() {
System.out.println("开始收取数据了.........");
}
}
spring配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="eamilTask" class="com.javacrazyer.comon.EamilTask" />
<!-- 对定时器进行设置每隔30秒调用一次emailTask -->
<bean id="springSchedule" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="eamilTask"></property>
<property name="period">
<value>10000</value>
</property>
<property name="delay">
<value>1000</value>
</property>
</bean>
<!-- 启动定时器 -->
<bean id="startTimeTask" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="springSchedule" />
</list>
</property>
</bean>
</beans>
同样,启动服务器后,发现每隔10秒,执行下输出
开始收取数据了.........
发表评论
-
Spring温习(9)--配置hibernate信息
2010-11-04 09:45 3113有时候为了为了操作方便,我们时常在spring整合hibern ... -
Spring温习(8)--国际化的支持
2010-11-03 11:07 3786我今天介绍的国际化呢,平时基本上都用不上,我的项目中也从来没用 ... -
Spring温习(6)--邮件发送实现
2010-10-28 21:55 7672Spring对邮件发送支持的很好,我们只要配置好邮件发送器,写 ... -
Spring温习(5)--CGLIB的动态代理[附AOP内部实现讲解]
2010-10-27 14:55 8881这篇文章紧接着上一篇静态代理和动态代理来说 前言: 到现在 ... -
Spring温习(4)--静态代理和动态代理
2010-10-27 11:27 3338代理模式分为静态代理和动态代理。静态代理就是我们自己定义的代理 ... -
Spring温习(3)--AutoWire自动装配
2010-10-27 09:48 3095在应用中,我们常常使用<ref>标签为JavaBe ... -
Spring温习(2)--IOC容器
2010-10-27 09:10 30481. Spring IoC的依赖注入 1) 使用构造方法来注入 ... -
Spring温习(1)--最基础的示例
2010-10-26 21:37 3492从现在开始,我将从Spring为起点,逐步复习几大框架各方面的 ... -
Spring事务管理的两种方式
2010-10-26 17:27 4029目前项目开发过程中对于Spring的事务管理,主要就这么两种方 ... -
Spring数据源配置的三种方式
2010-10-26 15:25 3781spring数据源配置目前确切的说应该分为:spring容器自 ... -
Spring AOP的两种实现方式
2010-10-26 11:18 5835AOP常用实现方式是一个采用声明的方式来实现,一个采用注解的方 ... -
Spring AOP原理及拦截器
2010-10-26 10:38 147910原理 AOP(Aspect Oriented Pro ... -
在MyEclipse8.5中恢复jpetstore项目
2010-10-22 17:24 2321恢复jpetstore项目的过程1.在myeclipse8.5 ... -
SpringMVC关键问题讲解
2010-10-21 21:31 22923接着上篇文章,大家可能关心的那两个问题 1.control ... -
SpringMVC入门实例及详细讲解
2010-10-21 20:48 215123Spring 框架提供了构建 Web 应用程序的 ...
相关推荐
2. **定时任务**:通过`org.springframework.scheduling`包,Spring支持基于 cron 表达式的任务调度,可以方便地管理计划任务。 3. **缓存支持**:Spring支持多种缓存实现,如EhCache、Hazelcast或Infinispan,以...
总结起来,`spring-context-support.jar`和`quartz-all-1.6.0.jar`的组合使用,为我们提供了强大的定时任务管理功能,结合Spring的bean管理和Quartz的调度能力,使得在Java应用中实现复杂任务调度变得轻而易举。...
spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...
赠送jar包:spring-context-support-5.3.15.jar; 赠送原API文档:spring-context-support-5.3.15-javadoc.jar; 赠送源代码:spring-context-support-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-context-...
1_什么事定时任务.mp4 2_为什么学习定时任务.mp4 3_定时任务技术发展趋势.mp4 4_主流定时任务框架优缺点和什么是分布式定时任务.mp4 5_环境搭建总体流程.mp4 6_前期准备-JDK.mp4 7_前期准备-Maven.mp4 8_前期准备-...
这个"spring-quartz-demo"项目就是一个很好的示例,它展示了如何在Spring中整合Quartz以实现动态定时任务。 首先,我们要了解Spring和Quartz的基本概念。Spring是一个全面的Java企业级应用开发框架,它提供了依赖...
Quartz Scheduler的Spring-Boot自动配置只是Quartz Scheduler的Spring-Boot启动器。 当然,Quartz Scheduler已经有好几个启动器,但是它们都不能满足我的所有需求,因此我创建了自己的启动器。 这只是一个业余项目。...
在SpringBoot中定义定时任务,我们创建一个实现了`org.springframework.scheduling.Trigger`和`org.springframework.scheduling.TaskExecutor`接口的类,或者直接使用Quartz的`CronTrigger`或`SimpleTrigger`。...
SpringBoot与Quartz的整合是Java开发者在构建可扩展、自动化任务系统时常见的...这只是一个基础示例,实际上Quartz支持更复杂的任务调度策略,如并发控制、故障转移和持久化等,可以根据项目需求进行深入研究和配置。
Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`模块和第三方的Quartz库。下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是...
通过Spring与Quartz的整合,可以轻松地在Spring应用中管理定时任务,提高代码的可维护性。 总结来说,Quartz是Java中强大的定时任务库,通过它我们可以方便地创建和管理复杂的任务调度,包括但不限于在特定时间点...
所需jar如下: spring-beans-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE....quartz-all-2.1.7.jar spring-tx-3.2.4.RELEASE.jar slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar
1. **任务调度支持**: `spring-context-support`包含了对Quartz和Commons JEXL的支持,允许开发者在Spring容器中配置和管理定时任务。例如,你可以通过XML配置或者使用`@Scheduled`注解来定义周期性执行的任务,这...
在Spring框架中,Quartz是一个强大的任务调度库,可以用于执行定时任务。本文将深入探讨如何在Spring中配置Quartz以实现多个定时任务。 首先,我们需要理解Quartz的基本概念。Quartz是一个开源的工作调度框架,它...
在本文中,我们将深入探讨如何在Spring Boot 2.3版本中集成Quartz定时任务,并实现其持久化到数据库,以便支持集群环境。这个过程的关键在于配置Quartz Scheduler,设置数据库连接,以及确保任务在多节点环境中能够...
- `spring-context-support-5.2.6.RELEASE.jar`:为Context模块添加了对各种第三方库的支持,如Quartz调度器、JMS等。 - `spring-core-5.2.6.RELEASE.jar`:Spring的核心工具集,包括IoC和基本的AOP支持。 - `spring...
在Spring框架中,Quartz是一个强大的任务调度库,可以用于执行定时任务。本文将深入探讨如何在Spring中配置多个Quartz定时任务,并结合`quartz.properties`文件进行详细讲解。 首先,我们需要理解Quartz的基本概念...
spring-boot-2.1.3.RELEASE.jar -autoconfigure- -devtools- -maven-plugin- -starter- -starter-jdbc- -starter-json- -starter-logging- -starter-test- -starter-tomcat- -starter-web- -test- -test-...
在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...
Spring框架结合Quartz库,提供了一种强大而灵活的方式来管理这些定时任务。本项目旨在演示如何利用Spring和Quartz从数据库中动态加载定时任务,并实现对它们的增删改查功能。以下是关于这个主题的详细知识讲解。 ...