朋友的项目中有点问题。他那边是Spring架构的,有一个比较简单的需要定时的任务执行。在了解了他的需求之后,于是提出了比较简单的Spring+quartz的实现方式。

注意本文只是讨论,在已搭建完毕的Spring工程下,完成最简单的定时任务。

第一步,要知道Spring这个架构,很有趣很有意思。可以做到自由插拔功能模块的效果。工程项目是基于MAVEN包依赖管理的,所以把这次需要的依赖包引用列出来:

org.springframework

spring-context-support

4.0.2.RELEASE

org.quartz-scheduler

quartz

2.2.1

当然,这是要跟对应的Spring的版本是要匹配的。我们这里的工程是4.0.2。前一个包spring-context-support,主要的作用是作为Spring与quartz的沟通管理的部件,如果注释掉就会报这样的错误

在MAVEN配置完所需要添加的包之后(其他的包,这里暂时不扩展开说了,本文只讨论在完整Spring工程项目下的配置),我们就可以开始动手给这个项目添加,定时任务的功能模块了。

第二步,从web的项目的起源,web.xml 中改动做起。由于原本的项目Spring的配置文件是Spring-mvc.xml,我这里就把定时任务的配置文件改成了spring-time.xml。这样就可以通过同一个扫描的配置在启动的时候去读取了。具体的代码如下:

contextConfigLocation

classpath:spring-*.xml

然后给大家看一下我的工程结构:

通过这样的配置,项目就会知道怎么去调用了。实现了这一步接下来我们就可以继续往下走了;

第三步,就是要完成spring-timer.xml这个定时任务的核心配置了。在这个文件配置中,我们主要是完成三件事情:

1.配置启动的设置,关于懒加载(简单说一下,比如把某个变量初始化为null,也是一种懒加载,即在服务启动之后,只有在实际被调用的时候才会实例化,否则是不会在内存中存在的,只是逻辑上的。可以省空间,但是也可能会导致,问题延迟很久才会被发现,此处不再详细解说),以及触发器的配置;

2.quartz-2.x的配置,包含定时任务触发之后要调用的job的名字,以及corn表达式(即定时表达式,控制程序在何时重复执行的原因,本次在会在后续补充关于cron表达式的内容);

3.配置job的内容和job对应的具体的类。

好了逻辑流程解说完毕,上代码:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

0/10 * * * * ?

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

work

完成这里的配置文件配置之后,就可以开始下一步,具体的业务逻辑实现了;

第四步,具体业务逻辑实现。

这里要注意的是下图中的两个点

上图是具体的业务实现的类,里面的名字和下图定时任务配置的要相同。

完成上述之后,我们可以启动项目看看实际效果了。

这里可以看到,定时任务按照我们之前在配置中的 0/10 * * * * ? 每10秒执行一次 来运行了。

要注意的是,在实现这个方法的过程中,我遇到了重复执行的情况。就是同一个时间,执行了两次。后来找到的原因是在配置web.xml的时候,重复配置了定时任务,这样导致执行了多次。要是有遇到这个情况的,可以参考我的解决方法。

接来下会有两篇文章,一篇是写定时任务的更简单的实现方法,另外一篇讲解cron 表达式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 定时 spring_Spring定时任务实现与配置(一)相关推荐

  1. java 定时 spring_Spring定时任务的几种实现

    Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将 ...

  2. spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java

    spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java spring默认定时任务的使用 package zhangphil.demo;impor ...

  3. java timertask 定时_Java定时任务--Timer和TimerTask

    1.程序和编程 我们知道,计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具. 简单来说程序在本质上是指令的集合,而编程从字面上来讲就是编写这些指令集合(程序) ...

  4. java 定时凌晨_java Timer 定时每天凌晨1点执行任务

    下面给大家介绍java Timer 定时每天凌晨1点执行任务,具体代码如下所示: import java.util.TimerTask; /** * 执行内容 * @author admin_Hzw ...

  5. Java如何实现定时任务——从某一天起每天定点执行

    Java如何实现定时任务--从某一天起每天定点执行 1.java定时任务可以借助 java.util.Timer 来实现 [java] view plain copy import java.util ...

  6. java中写定时任务

    java中得定时任务,7种使用方式 1.使用普通thread实现 @Testpublic void test1() { // 单位: 毫秒final long timeInterval = 1000; ...

  7. Java定时任务调度工具之Timer

    Java定时任务调度工具详解之Timer 导航: Java定时任务调度工具详解之Timer 一. 概述 1.1 课程介绍 1.2 Timer简介 1.3 实战演练 二. timer定时函数的用法 2. ...

  8. java定时数据同步_java 定时同步数据的任务优化

    前言 定时任务在系统中并不少见,主要目的是用于需要定时处理数据或者执行某个操作的情况下,如定时关闭订单,或者定时备份.而常见的定时任务分为2种,第一种:固定时间执行,如:每分钟执行一次,每天执行一次. ...

  9. java定时关机源码_java实现电脑定时关机的方法

    本文实例讲述了java如何注册成windows服务程序及一个简单的java定时关机程序代码,分享给大家供大家参考.具体方法如下: 一.问题: 最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可 ...

最新文章

  1. 刚刚,旷视开源深度学习框架「天元」:Brain++内核,研发和落地都在用;孙剑:COCO三连冠背后的秘密武器...
  2. push计算机语言,数组的操作push,pop,shift,unshift详解
  3. JavaScript操作大全整理(思维导图七--字符串函数)
  4. day4_监控日志的脚本
  5. python的seek用法
  6. HTML5作业:实现小米官网静态首页
  7. win7系统安装sql2000数据库时没有反应,不出来安装界面?
  8. 科幻3D场景必备要素—地球篇
  9. 响应式的优点和缺点??
  10. EnlightenGAN: Deep Light Enhancement without Paired Supervision
  11. [Style Transfer]—Combining Markov Random Fields and Convolutional Neural Network for Image Synthesis
  12. 计算机软件研究方法与技术路线,研究方法与技术路线
  13. 编写函数,对传送过来的三个数选出最大值和最小值,并通过形参传回调用函数
  14. 【长按图片识别】uniapp vue开发时,点击图片识别—实现转发、收藏、识别图片二维码
  15. pulp platform 的搭建
  16. office右键没有新建word,Visio等解决办法
  17. Tita OKR分享:如何进行OKR的复盘?
  18. nginx 配置ip_hash不会自动剔除宕机的服务器
  19. 省常中NOIP模拟 孤独 loneliness
  20. 【无线通信模块】GPRS DTU不稳定和容易掉线原因

热门文章

  1. BCVP开发者说第一期:Destiny.Core.Flow
  2. 为什么这么忙,还依然做不好事情?
  3. 信创产业发展应不忘初心牢记使命
  4. 将终结点图添加到你的ASP.NET Core应用程序中
  5. Istio 中的 Sidecar 注入及透明流量劫持过程详解
  6. .NET Core 3.0 本地工具
  7. ASP.NET Core WebAPI中使用JWT Bearer认证和授权
  8. 稳定工作和创业之间的抉择
  9. 数据告诉你:中年并不只有危机,创业或许正当时
  10. g4e基础篇#2 Git分布式版本控制系统的优势