spring Quartz简单整合测试

quartz和spring整合完整测试 自己琢磨好几天终于琢磨透了,欢迎大家下载,顺便有需要我这还有资料! 立即下载

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.2.1。

一、Spring创建JobDetail的两种方式 定时任务两种方式,Spring很好的封装使用Quartz的细节,第一种方式是利用SPring封装的Quartz类进行特定方法的实现,第二种是通过透明的使用Quartz达到定时任务开发的目的,总体说第二种对开发人员更方便! 配置Spring的任务调度抽象层简化了任务调度,在Quartz的基础上提供了更好的调度对象。Spring使用Quartz框架来完成任务调度,创建Quartz的作业Bean(JobDetail),有一下两种方法: 

1:利用JobDetailBean包装QuartzJobBean子类(即Job类)的实例。  

2:利用MethodInvokingJobDetailFactoryBean工厂Bean包装普通的Java对象(即Job类)。  

说明:  

1:采用第一种方法 创建job类,一定要继承QuartzJobBean ,实现 executeInternal(JobExecutionContext jobexecutioncontext)方法,此方法就是被调度任务的执行体,然后将此Job类的实例直接配置到JobDetailBean中即可。这种方法和在普通的Quartz编程中是一样的。  

2:采用第二种方法 创建Job类,无须继承父类,直接配置ethodInvokingJobDetailFactoryBean 即可。但需要指定一下两个属性: targetObject:指定包含任务执行体的Bean实例。 targetMethod:指定将指定Bean实例的该方法包装成任务的执行体。


这里主要展示第二种方法;

1.配置需要的jar包pom.xml配置如下

  <properties>
        <spring.version>3.2.8.RELEASE</spring.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>1.8.5</version>
        </dependency>

        <!--  spring framework    -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>

        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>


2.配置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"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

    <!-- Timer schedule -->

    <!--要调度的对象-->
    <bean id="jobBean" class="QuartzJob" />
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="jobBean" />
        <property name="targetMethod" value="execute" />
        <!--将并发设置为false-->
        <property name="concurrent" value="false" />
    </bean>

    <bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobDetail" />
        <!--表达式,我的是每 30 执行一次-->
        <property name="cronExpression" value="0/30 * * * * ?" />
    </bean>

    <!--  总管理类如果将lazy-init='false'那么容器启动就会执行调度程序   -->
    <bean id="startQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" >
        <property name="triggers">
            <list>
                <!--作业调度器,list下可加入其他的调度器-->
                <ref bean="trigger" />
            </list>
        </property>
    </bean>
</beans>

3.新建自己的Job类

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by pengli on 5/5/2015.
 */
public class QuartzJob {


    public void execute(){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date now = new Date();
    String ly_time = sdf.format(now);
    System.out.println(ly_time+"\n");
}


    public static void main(String[] args){
        System.out.println("Job start");
        ApplicationContext content = new ClassPathXmlApplicationContext("applicationcontext.xml");
        content.getBean("startQuartz");
        System.out.println("Job end");

    }

}

结果


 

1 、JobDetail : JobDetail 是一个具体的类。 
2、Trigger :触发器,它用于定义 Job 何时执行。最常用的是 SimpleTrigger 和 CronTrigger 。一般来说,如果你需要在一个固定的时间和重复次数或者一个固定的间隔时间,那么 SimpleTrigger 比较合适;如果你有许多复杂的作业调度,那么 CronTrigger 比较合适。 CronTrigger 和 Unix 的 cron 机制基本一样,我们需要的只是一个 cron 表达式。比如“ 0 0 12 * * ? ”会在每天中午 12 点触发 执行;“ 0 15 10 ? * 6L ”会在每个月的最后一个星期五的早上 10:15 触发 Job 执行。
3、 Scheduler 和 SchedulerFactory : Scheduler 负责管理 Trigger 、调度 Job , SchedulerFactory 则是 Scheduler 工厂,负责生成 Scheduler 。

一下内容转载自:http://yangpanwww.iteye.com/blog/797563

字段名 允许的值 允许的特殊字符 
秒 0-59 , - * / 
分 0-59 , - * / 
小时 0-23 , - * / 
日 1-31 , - * ? / L W C 
月 1-12 or JAN-DEC , - * / 
周几 1-7 or SUN-SAT , - * ? / L C # 
年 (可选字段) empty, 1970-2099 , - * /

‘’ 字符可以用于所有字段,在“分”字段中设为”“表示”每一分钟”的含义。 
‘?’ 字符可以用在“日”和“周几”字段. 它用来指定 ‘不明确的值’. 这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。 
‘-’ 字符被用来指定一个值的范围,比如在“小时”字段中设为”10-12”表示”10点到12点”. 
‘,’ 字符指定数个值。比如在“周几”字段中设为”MON,WED,FRI”表示”the days Monday, Wednesday, and Friday”. 
‘/’ 字符用来指定一个值的的增加幅度. 比如在“秒”字段中设置为”0/15”表示”第0, 15, 30, 和 45秒”。而 “5/15”则表示”第5, 20, 35, 和 50”. 在’/’前加”*”字符相当于指定从0秒开始. 每个字段都有一系列可以开始或结束的数值。对于“秒”和“分”字段来说,其数值范围为0到59,对于“小时”字段来说其为0到23, 对于“日”字段来说为0到31, 而对于“月”字段来说为1到12。”/”字段仅仅只是帮助你在允许的数值范围内从开始”第n”的值。 因此对于“月”字段来说”7/6”只是表示7月被开启而不是“每六个月”, 请注意其中微妙的差别。 
‘L’字符可用在“日”和“周几”这两个字段。它是”last”的缩写, 但是在这两个字段中有不同的含义。例如,“日”字段中的”L”表示”一个月中的最后一天” —— 对于一月就是31号对于二月来说就是28号(非闰年)。而在“周几”字段中, 它简单的表示”7” or “SAT”,但是如果在“周几”字段中使用时跟在某个数字之后, 它表示”该月最后一个星期×” —— 比如”6L”表示”该月最后一个周五”。当使用’L’选项时,指定确定的列表或者范围非常重要,否则你会被结果搞糊涂的。 
‘W’ 可用于“日”字段。用来指定历给定日期最近的工作日(周一到周五) 。比如你将“日”字段设为”15W”,意为: “离该月15号最近的工作日”。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日, 触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。然而如果你将“日”字段设为”1W”, 而一号又是周六, 触发器会于下周一也就是当月的3号触发,因为它不会越过当月的值的范围边界。’W’字符只能用于“日”字段的值为单独的一天而不是一系列值的时候。 
‘L’和’W’可以组合用于“日”字段表示为’LW’,意为”该月最后一个工作日”。 
‘#’ 字符可用于“周几”字段。该字符表示“该月第几个周×”,比如”6#3”表示该月第三个周五( 6表示周五而”#3”该月第三个)。再比如: “2#1” = 表示该月第一个周一而 “4#5” = 该月第五个周三。注意如果你指定”#5”该月没有第五个“周×”,该月是不会触发的。 
‘C’ 字符可用于“日”和“周几”字段,它是”calendar”的缩写。它表示为基于相关的日历所计算出的值(如果有的话)。如果没有关联的日历, 那它等同于包含全部日历。“日”字段值为”5C”表示”日历中的第一天或者5号以后”,“周几”字段值为”1C”则表示”日历中的第一天或者周日以后”。 
对于“月份”字段和“周几”字段来说合法的字符都不是大小写敏感的。 
下面是一些完整的例子: 
表达式 含义 
“0 0 12 * * ?” 每天中午十二点触发 
“0 15 10 ? * *” 每天早上10:15触发 
“0 15 10 * * ?” 每天早上10:15触发 
“0 15 10 * * ? *” 每天早上10:15触发 
“0 15 10 * * ? 2005” 2005年的每天早上10:15触发 
“0 * 14 * * ?” 每天从下午2点开始到2点59分每分钟一次触发 
“0 0/5 14 * * ?” 每天从下午2点开始到2:55分结束每5分钟一次触发 
“0 0/5 14,18 * * ?” 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 
“0 0-5 14 * * ?” 每天14:00至14:05每分钟一次触发 
“0 10,44 14 ? 3 WED” 三月的每周三的14:10和14:44触发 
“0 15 10 ? * MON-FRI” 每个周一、周二、周三、周四、周五的10:15触发 
“0 15 10 15 * ?” 每月15号的10:15触发 
“0 15 10 L * ?” 每月的最后一天的10:15触发 
“0 15 10 ? * 6L” 每月最后一个周五的10:15触发 
“0 15 10 ? * 6L” 每月最后一个周五的10:15触发 
“0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月最后一个周五的10:15触发 
“0 15 10 ? * 6#3” 每月的第三个周五的10:15触发


“30 * * * * ?” 每半分钟触发任务 
“30 10 * * * ?” 每小时的10分30秒触发任务 
“30 10 1 * * ?” 每天1点10分30秒触发任务 
“30 10 1 20 * ?” 每月20号1点10分30秒触发任务 
“30 10 1 20 10 ? *” 每年10月20号1点10分30秒触发任务 
“30 10 1 20 10 ? 2011” 2011年10月20号1点10分30秒触发任务 
“30 10 1 ? 10 * 2011” 2011年10月每天1点10分30秒触发任务 
“30 10 1 ? 10 SUN 2011” 2011年10月每周日1点10分30秒触发任务 
“15,30,45 * * * * ?” 每15秒,30秒,45秒时触发任务 
“15-45 * * * * ?” 15到45秒内,每秒都触发任务 
“15/5 * * * * ?” 每分钟的每15秒开始触发,每隔5秒触发一次 
“15-30/5 * * * * ?” 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次 
“0 0/3 * * * ?” 每小时的第0分0秒开始,每三分钟触发一次 
“0 15 10 ? * MON-FRI” 星期一到星期五的10点15分0秒触发任务 
“0 15 10 L * ?” 每个月最后一天的10点15分0秒触发任务 
“0 15 10 LW * ?” 每个月最后一个工作日的10点15分0秒触发任务 
“0 15 10 ? * 5L” 每个月最后一个星期四的10点15分0秒触发任务 
“0 15 10 ? * 5#3” 每个月第三周的星期四的10点15分0秒触发任务


spring之定时任务实现(spring-task和quartz等不同方式) spring之定时任务实现(spring-task和quartz,注解,非注解等不同方式),附文档+源码工程,本人已测试通过才上传,希望对大家有所帮助 立即下载

相关推荐

Quartz触发器的使用DEMO(Spring实现)

Quartz触发器的使用DEMO(Spring实现)

Spring定时器 QuartzJobBean的使用(工作类继承QuartzJobBean)

Spring定时器 QuartzJobBean的使用(工作类继承QuartzJobBean)

u010109949的博客 2844

quartz作业调度测试

quartz做的小例子

quartz定时任务Job测试类怎么实现的,单元测试测试quartz定时任务的执行效果

主要是讲解的是quartz的定时任务的测试类演示

道阻且长,行则将至 行而不辍,未来可期 2210

用rsl_rl训练四足机器人走梅花桩:PPO算法调参实战与避坑指南

本文详细介绍了如何使用rsl_rl框架和PPO算法训练四足机器人在梅花桩上行走的实战经验。通过分析梅花桩场景的独特挑战,提供PPO算法关键参数配置策略、奖励函数设计方法以及常见问题的解决方案,帮助开发者高效实现机器人平衡控制。文章特别强调了仿真到实机的过渡技巧,最终实现98%的过桩成功率。

weixin_29103191的博客 221

Win11 C盘瘦身终极指南:哪些能删/能移/不能碰?附详细目录清单

本文提供了一份详细的Win11 C盘瘦身终极指南,清晰区分了可安全删除、适合迁移以及绝对不能触碰的系统目录。文章不仅列出了具体的文件夹清单与操作建议,还介绍了使用符号链接和Robocopy进行安全迁移的高阶方法,并附带了自动化脚本,帮助用户从根本上解决C盘空间不足的问题,同时确保系统稳定。

weixin_29246195的博客 1546

定时器quartz的配置与测试

一、引入两个jar包 spring-context-support-3.1.3.RELEASE.jar和quartz-1.8.6.jar 二、配置文件 http://www.springframework.org/schema/beans"     xmlns:util="http://www.springframework.org/schema/util" xmlns:x

wangzuojia001的博客 2021

第四届“网鼎杯”网络安全大赛 - 青龙组

第四届“网鼎杯”网络安全大赛 - 青龙组

lpppp小公主的博客 1315

JUnit 单元测试

(1)什么是测试? TDD TDD是测试编程驱动,编程方法学, 也是一种编程思想,是先写测试用例再编码。 特点是:保证了代码的质量,测试的覆盖率高, 但是开发效率低。 DDD 领域驱动设计 测试本身也是一套完整学科 单元测试 白盒测试 --- 能看到完整的代码 黑盒测试 --- 没有源码的,也叫功能测试。 灰盒测试 压力测试 并发数的问题,能承载多少并发...

weixin_30546189的博客 474

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 196

无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案

本文主要介绍了无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案,希望能对使用wIndows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

Quartz(四) quartz与spring整合并简单的测试

一、新建一个maven工程,导包如下,其他的准备工作就是spring的一些基础配置,这里就不赘述配置了,该例子使用sh框架整合查询数据库! 二、数据库设计如下 CREATE TABLE `jobinfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `job_name` varchar(255) NOT NULL, `job_group`

小错的博客 947

智能温室:温室环境监测_(7).土壤监测技术包括pH值和电导率

土壤的pH值是指土壤溶液的酸碱度,它对植物的营养吸收和生长发育有着重要的影响。在智能温室中,土壤监测是非常重要的一个环节,因为土壤的pH值和电导率直接影响植物的生长和健康。本节将详细介绍如何利用传感器和数据处理技术来监测土壤的pH值和电导率,并提供具体的代码示例。在智能温室中,监测到的土壤pH值和电导率数据需要传输到中央控制系统进行进一步的处理和分析。通过以上步骤,您可以构建一个完整的智能温室土壤监测系统,实时监控土壤的pH值和电导率,确保植物在最佳的生长环境中。校准通常包括在已知电导率的标准溶液中进行。

zhubeibei168的博客 1408

Spring Boot整合Quartz定时任务框架

**@description: Quartz介绍Job@author: 波波烤鸭*/@OverrideSystem.out.println(“quartz任务执行了…”+new Date());

2501_90225546的博客 992

HCIE-Datacom笔试题库

关于HCIE Datacom笔试考试题目整理!

坏坏-5的博客 612

华为OD机试双机位C卷:流量波峰 (C/C++/Py/Java/Js/Go)

华为OD机试双机位C卷 流量波峰,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 流量波峰。

qq_45776114的博客 2446

Spring Boot 整合 Quartz 定时框架(测试多个任务调度执行)

Quartz 的使用思路 1)job - 任务 - 你要做什么事? 2)Trigger - 触发器 - 你什么时候去做? 3)Scheduler - 任务调度 - 你什么时候需要去做什么事? 1.创建springboot项目,添加pom文件依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o

weixin_46685039的博客 638

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring整合Quartz(七)

> 勿以恶小而为之,勿以善小而不为--------------------------刘备 >劝诸君,多行善事积福报,莫作恶 主要内容: spring 整合 Quartz的几种方式

两个蝴蝶飞 987

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring boot整合quartz方法

简单的Spring boot整合Quartz方法

In23754的博客 6081

SSM整合Quartz(MySql,SpringMVC,Spring,Mybatis)

1、Quartz下载 Quartz下载地址:http://www.quartz-scheduler.org/downloads/,本自行选择下载不同的版 2、表的作用及其字段含义 2.1 创建表的语句的sql文件位置 对应不同的数据库,Quartz提供了不同的sql脚本来创建qrtz_开头的11张表,sql脚本在docs\dbTables下面。 2.2 11张表的主要用途:...

zengdongwen的博客 757

自学-spring-quartz 进行整合-02

1.为了让实体类进行不耦合,独立运行,我们只需要写个实体类,不进行实现job  接口即可 2.public class MyJob{ public void execute() { System.out.println("-->" + new Date() + ": doMyJob...."); }3.主要是spring 进行整合,即在配置文件中进行配置: <beans xmlns

女神的高冷范 303

Spring整合Quartz实现定时任务调度

一. 核心类 1. Job: 表示一个工作, 具体的业务处理都在这里. 2. JobDetail: 表示一个具体的可执行的调度程序. 3. Trigger: 用于调度参数的配置(什么时候去调用Job). 4. Scheduler: 表示一个调度容器, 容器中有一个线程池, 用来并行调度执行每个作业, 一个调度容器中可以注册多个JobDetail和Trigger.

技术人生 2345

Quartz整合spring

本文介绍了如何配置基于Spring和Quartz的任务调度系统。首先在Maven项目中配置了必要的依赖包(Spring框架和Quartz),并将项目打包为WAR格式。然后通过XML配置文件定义了JobDetail、触发器(每10秒执行一次)和调度工厂。Web.xml中配置了Spring上下文监听器并指定了配置文件位置。最后实现了JobDemo类作为任务执行实体,包含run方法打印当前时间。测试结果表明任务能够按预期每10秒执行一次。整个配置过程清晰展示了Spring与Quartz的集成方式。

豆豆的博客 190
上一篇: Spring with Maven
下一篇: Apache Shiro 使用手册(一)Shiro架构介绍
AlvinTech14
博客等级 码龄12年 10粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值