手头的这个项目需要用到定时任务,但之前没接触过这东西,所以不太会用,从网上找资料,大致了解了一下,其实也不难。Java的定时任务实现有三种,一种是使用JDK自带的Timer那个类来实现,另一种是使用quartz框架来实现,最后一种是在项目使用Spring框架的情况下用Spring框架来实现。JDK自带的类是单线程的,而且只能定义特定时间去执行任务,而不能指定任务执行的频率,所以一般用的较少,只有处理一些简单的程序才会用到。而quartz是一个轻量级的框架,支持多线程,支持定义频率,所以非常方便。我目前手头这个就是用了SSM框架,所以就用quartz来实现了。下面是详细步骤。

1.在项目中导入jar包(之前看资料,别人说Spring框架自带quartz,直接可以使用,但自己实践时发现有几个方法不存在,所以就下载jar包导入了)

Spring的jar包自然是必须的,然后在quartz官网下载jar包(Quartz 2.1.7),解压后导入下面两个包。

另外要说明的是,Spring框架中必须要有 spring-context-support-4.2.6.RELEASE.jar这个包,配置时好多类都依赖于这个包,所以必须得有。

后来还发现一个问题,就是spring-beans-4.2.6.RELEASE.jar这个jar包的版本不能太低,4.2.6没问题,但目前已经经过测试得知3.0.5版本绝对会出现无法创建所需要的类的错误信息,出现这种错误只需要再加一个高版本的beans包就可以。

2.在Spring的配置文件头部定义以下信息

 xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd 

3.写好自己需要执行的业务逻辑代码

 package com.msq;

 public class  TestJobTask{
/**
*业务逻辑处理
*/
public void service(){
/**业务逻辑*/
System.out.println(System.currentTimeMillis());
}
}

4.在Spring里面继续作如下配置:

     <!-- 定时任务start -->

     <!-- 线程执行器配置,用于任务注册 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean> <!-- 业务对象 -->
<bean id="testJobTask" class="com.msq.TestJobTask" /> <!-- 调度业务 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="testJobTask" />
<property name="targetMethod" value="service" />
</bean> <!-- 增加调用的触发器,触发时间 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail" />
<property name="cronExpression" value="0/5 * * * * ? *" />
</bean> <!-- 设置调度 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean> <!-- 定时任务end -->

到此,就配置完了,部署项目到Tomcat,就可以运行了,可以看到在控制台每隔五秒就会输出当前时间。

Spring框架下的定时任务quartz框架的使用的更多相关文章

  1. spring boot 学习(八)定时任务 @Scheduled

    SpringBoot 定时任务 @Scheduled 前言 有时候,我们有这样的需求,需要在每天的某个固定时间或者每隔一段时间让应用去执行某一个任务.一般情况下,可以使用多线程来实现这个功能:在 Sp ...

  2. 『德不孤』Pytest框架 — 1、Pytest测试框架介绍

    目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...

  3. spring整合Quartz框架过程,大家可以参考下

    这篇文章详细介绍了spring集成quartz框架流程,通过示例代码进行了详细说明,对学习或任务有参考学习价值,并可供需要的朋友参考. 1.quartz框架简介(m.0831jl.com) quart ...

  4. 【淘淘】Spring整合Quartz框架

    我在外面工作实习的时候,我们做的项目是一个日报子系统,也就是定时定点为公司生成一些报表数据还有一些数据反馈.这时候我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.当时,我做 ...

  5. quartz框架实现定时任务举例

    简单的定时任务功能可以通过原生的java.util.Timer定义执行时间规则.继承java.util.TimeTask来定义执行逻辑来实现,更方便的是利用开源的quartz框架,只需定义几个spri ...

  6. Spring自带的定时任务框架Schedule的优缺点及使用

    spring自带的定时任务框架的有点:简单,拆箱即用 spring自带的定时任务框架的缺点: 不支持集群:为避免重复执行的问题 不支持生命周期统一管理:不重启服务情况下关闭,启动任务 不支持分片任务: ...

  7. Spring框架下的单元测试方法

    介绍在Spring的框架下,做单元测试的两种办法. 一.使用spring中对Junit框架的整合功能 除了junit4和spring的jar包,还需要spring-test.jar.引入如下依赖: & ...

  8. Spring MVC框架下的第一个Hello World程序

    本程序是一个maven程序,使用maven方便管理jar包和程序,简化了操作步骤.本程序的目的是通过一个简单的程序,了解Spring MVC框架的基本工作流程,由简入繁的学习Spring MVC框架, ...

  9. 在Spring Boot框架下使用WebSocket实现聊天功能

    上一篇博客我们介绍了在Spring Boot框架下使用WebSocket实现消息推送,消息推送是一对多,服务器发消息发送给所有的浏览器,这次我们来看看如何使用WebSocket实现消息的一对一发送,模 ...

随机推荐

  1. 【less和sass的区别,你了解多少?】

    在介绍less和sass的区别之前,我们先来了解一下他们的定义: 一.Less.Sass/Scss是什么? 1.Less: 是一种动态样式语言. 对CSS赋予了动态语言的特性,如变量.继承.运算.函数 ...

  2. SVN分支/合并原理及最佳实践

    转自:http://blog.csdn.net/e3002/article/details/21469437 使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到 ...

  3. eclipse内存溢出设置

    1. arguments中的内容添加红色部分:   -Dcatalina.base="E:\workspace\.metadata\.plugins   \org.eclipse.wst.s ...

  4. 022 component(组件)关联映射

    Component关联映射: 目前有两个类如下: 值对象没有标识,而实体对象具有标识,值对象属于某一个实体,使用它重复使用率提升,而且更清析. 以上关系的映射称为component(组件)关联映射 在 ...

  5. .Net Core应用搭建的分布式邮件系统设计

    本篇分享的是由NetCore搭建的分布式邮件系统,主要采用NetCore的Api和控制台应用程序,由于此系统属于公司的所以这里只能分享设计图和一些单纯不设计业务的类或方法: 为什么要在公司中首例采用N ...

  6. DATA VISUALIZATION – PART 2

    A Quick Overview of the ggplot2 Package in R While it will be important to focus on theory, I want t ...

  7. 初码-Azure系列-文章目录

    系统迁移 初码-Azure系列-记一次MySQL数据库向Azure的迁移 初码-Azure系列-迁移PHP应用至Azure的一些实践记录和思考 初码-Azure系列-记一次从阿里云到Azure的迁移和 ...

  8. 读 Zepto 源码之集合元素查找

    这篇依然是跟 dom 相关的方法,侧重点是跟集合元素查找相关的方法. 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 zept ...

  9. NodeJs的简单介绍

    Nodejs是由谷歌v8运行.c++编写的js运行的环境,这里需要记住的是Nodejs只是一个环境.  目前很多主流网站都是使用nodejs,如知乎等大型的网站. 我们关于nodejs学习目标:安装N ...

  10. windows embedded compact 2013 正版免费下载

    不知道wince2013是不是真的免费了,不过可以试一下! 下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=39268 你仍然 ...