`
changhongbao
  • 浏览: 123969 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SpringMVC整合Quartz实现定时任务以及Tomcat服务执行初始化定时任务

 
阅读更多

在java中我们常用Timer和TimerTask实现定时功能,而在JavaEE项目中可以使用Spring整合Quartz定时器,非常的强大,能够实现所有想要的定时任务,包括Tomcat服务器开始启动,定时定点定周等等的任务,有关Quartz的介绍和时间配置网上有很多的资料,就不在累赘,下面主要介绍SpringMVC整合Quartz的实现步骤。

 

来源博客:http://blog.csdn.net/fengshizty

 

1、 导入quartz.jar包,或者pom.xml 配置对应的依赖:

     

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1.                <dependency>  
  2.     <groupId>org.quartz-scheduler</groupId>  
  3.     <artifactId>quartz</artifactId>  
  4.     <version>1.8.6</version>  
  5. </dependency>  

 

 

2、 在Web项目web.xml中配置quartz的配置文件加载路径:

 

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1.       <servlet>  
  2. <servlet-name>rest</servlet-name>  
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4. <init-param>  
  5.     <param-name>contextConfigLocation</param-name>  
  6.     <param-value>  
  7.         /WEB-INF/classes/rest-servlet.xml,   
  8.        /WEB-INF/classes/pyc-spring-quartz.xml  
  9.     </param-value>  
  10. </init-param>   
  11. <load-on-startup>1</load-on-startup>  
  12. lt;/servlet>  


3、写具体的定时调度的任务:

 

 

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package andy.test.quartz.schedule;  
  2.   
  3. /**   
  4.  * @author Zhang,Tianyou   
  5.  * @version:2014-12-11 下午12:00:24   
  6.  *  
  7.  *  一个测试的打印定时任务 
  8.  */  
  9.   
  10. public class MyPrintSchedule {  
  11.   
  12.     public void printSomething(){  
  13.         //内容就是打印一句话  
  14.         System.out.println("this is andy schedule");  
  15.     }  
  16. }  

 

 

4、配置quartz的xml配置信息,名字可以随便,需和web.xml中的一致。

     pyc-spring-quartz.xml配置信息如下:

 

 

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  5.     <!-- 添加调度的任务bean 配置对应的class-->  
  6.     <bean id="myPrintSchedule" class="andy.test.quartz.schedule.MyPrintSchedule" />  
  7.   
  8.     <!--配置调度具体执行的方法-->  
  9.     <bean id="myPrintDetail"  
  10.         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
  11.         <property name="targetObject" ref="myPrintSchedule" />  
  12.         <property name="targetMethod" value="printSomething" />  
  13.         <property name="concurrent" value="false" />  
  14.     </bean>  
  15.   
  16.     <!--配置调度执行的触发的时间-->  
  17.     <bean id="myPrintTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  18.         <property name="jobDetail" ref="myPrintDetail" />  
  19.         <property name="cronExpression">  
  20.             <!-- 每天早上8点执行任务调度 -->  
  21.             <value>0 0 8 * * ?</value>  
  22.         </property>  
  23.     </bean>  
  24.   
  25.       
  26.   
  27.     <!-- quartz的调度工厂 调度工厂只能有一个,多个调度任务在list中添加 -->  
  28.     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  29.         <property name="triggers">  
  30.             <list>  
  31.                  <!-- 所有的调度列表-->  
  32.                 <ref local="myPrintTrigger" />  
  33.                   
  34.             </list>  
  35.         </property>  
  36.     </bean>  
  37.   
  38. </beans>  


这样就实现了myPrint的任务调度,执行时间是每天早上8点执行一次,打印:

 

     this is andy schedule

这句话。

 

quartz的功能是非常强大的,使用也非常的简单方便,有事需要web启动时,执行一些初始化的任务,这是我们执行配置对应的执行调度的触发时间就能完成。其具体实现如下:

 

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <!--配置调度执行的触发的时间-->  
  2. <bean id="myPrintTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  3.     <property name="jobDetail" ref="myPrintDetail" />  
  4.     <property name="cronExpression">  
  5.         <!-- 不重复计数,只执行一次 -->  
  6.         <property name="repeatCount" value="0" />  
  7.     </property>  
  8. </bean>  


上面的配置完成了,服务器启动执行的任务。只被执行一次。

 

 

来源博客:http://blog.csdn.net/fengshizty

分享到:
评论

相关推荐

    ssm集成quartz完成定时任务

    SSM(Spring、SpringMVC、MyBatis)框架与Quartz的集成是Java开发中常见的一种实现定时任务的方法。Quartz是一个强大的开源作业调度框架,可以用来执行定时任务,而SSM作为主流的Java Web开发框架,为业务逻辑处理...

    springMVC+Mybatis+quartz+log4j+maven项目

    1. **初始化项目**:使用Maven创建一个新的项目结构,配置pom.xml文件以引入SpringMVC、Mybatis、Quartz和Log4j等相关依赖。 2. **配置SpringMVC**:编写Spring的配置文件,定义DispatcherServlet、视图解析器、...

    SSM框架+redis+druid事务控制+定时任务介绍+sql脚本+测试说明及请求路径

    总结来说,这个项目提供了一个使用SSM框架构建的Web应用,整合了Redis缓存、Druid数据源以及定时任务功能,同时包含了SQL脚本来创建数据库结构和初始化数据。MyEclipse 2014和Tomcat 8是开发和运行环境,用户可以...

    基于javaweb+ssm技术的农作物信息服务平台.zip

    3. 异步处理:使用Spring的Task或者Quartz实现定时任务,例如定期更新农作物价格信息。 4. 缓存技术:引入Redis缓存常用数据,减轻数据库压力,提高系统响应速度。 七、项目实施与优化 1. 需求分析:明确系统功能...

    基于SpringBoot,ORM-Mybatis,SpringMVC和多种组件构建的企业信息化开发基础平台,快速构建OA、CMS

    标题中的“基于SpringBoot,ORM-Mybatis,SpringMVC和多种组件构建的企业信息化开发基础平台”揭示了一个关键的信息:这是一个使用Spring技术栈构建的、用于企业信息化建设的基础开发框架。这个框架集成了SpringBoot...

    面试准备1

    - **Quartz**:Quartz是一个开源的作业调度框架,它可以与Spring框架集成,通过创建配置文件如`spring-quartz.xml`来定义Jobs和Triggers,实现更复杂的定时任务调度。 2. **技术栈** - **Spring Boot**:是一个...

    毕设项目:基于springboot+mybatis实现的外卖订餐系统.zip

    对于订单状态的自动更新或者商家接单提醒等功能,可能使用了Quartz或Spring Task等定时任务框架。 10. **测试**: 为了确保代码质量和系统稳定性,项目中应该包含单元测试和集成测试,使用JUnit和Mockito等工具...

    基于springboot微信点餐系统微信小程序源码数据库.zip

    9. **任务调度**: 如果系统中有定时任务,例如每天凌晨更新菜品信息,可以使用Quartz或Spring Task进行后台任务的调度。 10. **日志记录**: 为了便于系统监控和问题排查,项目中通常会集成日志框架如Log4j或Logback...

    springboot196高校教师科研管理系统.rar

    8. **任务调度**:可能使用Quartz或Spring Task进行定时任务,例如定期统计科研成果。 9. **报表与数据分析**:可能通过Apache POI读取Excel数据,生成统计报表,或者使用Chart.js、Highcharts等库展示图表。 10. **...

    【ssm项目源码】在线点餐系统.zip

    8. **任务调度**:系统可能还需要处理定时任务,如订单超时处理、库存同步等,这可能用到Quartz或Spring的Task调度。 9. **单元测试与集成测试**:为了保证代码质量,项目中会有对应的测试代码,使用JUnit进行单元...

    基于SpringBoot+Vue的电商应用系统源码数据库.zip

    4. **任务调度**:Quartz或Spring Task可能用于处理后台任务,如定时生成报表、清理过期数据等。 5. **测试**:JUnit和Mockito用于单元测试,Spring Boot Test支持集成测试。 这个项目对于学习和实践现代Web开发...

    面试宝典-v4.0

    - Quartz:可能介绍了定时任务调度器Quartz的基本使用和监控Job执行状态的方法。 - MQ(消息队列):可能讨论了消息队列的概念、常见的消息队列技术(如RabbitMQ、ActiveMQ等)以及它们在项目中的应用。 - Dubbo:...

    高校就业招聘系统微信小程序.zip

    7. **性能优化**:包括缓存策略(如Redis)、数据库索引优化、异步处理(如Quartz定时任务)等,以提高系统的响应速度和并发处理能力。 8. **部署与监控**:项目部署可能涉及Docker容器化、Jenkins持续集成/持续...

    SpringBoot新手学习手册

    - @Scheduled创建定时任务,@Async实现异步调用。 - 多环境配置、修改端口号、YML文件的使用、整合拦截器等实用技巧。 - 通过Maven或Gradle打包发布应用。 总之,SpringBoot新手学习手册涵盖了从基础到进阶的...

    kjyw-master_JAVA脚手架22_

    - **任务调度**: 可能集成 Quartz 或 Spring Task 进行定时任务处理。 - **国际化支持**: 支持多语言环境,便于不同地区的用户使用。 - **缓存机制**: 可能采用 Redis 或 Ehcache 进行数据缓存,提高性能。 此外,...

    adminstore:一个简单的项目初始化模板,集成shiro,spring,hibernate,spring mvc,ehcache,disconver,bootstrap。搭建项目时候不错的一个选择!,后台采用AdminLte

    AdminStore 本源码包采用maven结构 环境要求 JDK6或更高版本(支持JDK7、JDK8)。建议使用JDK8,有更好的内存管理。更低版本的JDK6、JDK7可能...定时任务 quartz AdminLTE bootstrap 搭建步骤 创建数据库。如使用MySQL

    springboot-cms:基于Springboot,Spring,SpringMVC,Mybatis,FreeMarker,Bootstrap,Apache Shiro,Quartz,Email,MySQL等的内容管理系统

    CMS系统说明 一,开发背景 二,技术框架 1.开发环境 JDK1.8 Apache-Maven-3.5.0 ...|- sql -------------------------------------------------------- 数据库建表语句以及初始化 |- src -----------

    基于ssm在线云音乐系统.zip

    3. **数据库脚本**:创建数据库和表的SQL文件,用于初始化数据。 4. **静态资源**:如图片、音频文件,供用户在线浏览和播放。 5. **微信小程序代码**:包括WXML、WXSS和JS文件,构成小程序的界面和逻辑。 6. **...

    Java进阶SpringBoot视图技术共12页.pdf

    SpringBoot简化了传统Spring应用的初始化和配置,使得开发更加高效。本教程共12页,旨在帮助开发者掌握SpringBoot在构建Web应用时如何处理视图层的细节。 1. **SpringBoot简介** SpringBoot是由Pivotal团队提供的...

    java最新面试宝典

    - 如何在项目中集成Quartz实现定时任务。 **六、MQ** **1. RabbitMQ:** - **知识点概述:** - RabbitMQ的基本架构。 - 消息队列的创建与使用。 - 消息确认机制。 - 消息持久化策略。 - RabbitMQ的高可用性...

Global site tag (gtag.js) - Google Analytics