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

TPS5430/54302调试血泪史:从‘烫手山芋’到冒烟烧板,我的5V电源到底怎么了?

本文深入剖析了TPS5430/TPS54302 DCDC电源芯片调试中的常见问题,包括异常发热、电压漂移等,并提供了从热设计到PCB布局的全面解决方案。通过实战案例,揭示了数据手册中未明确的‘潜规则’,帮助工程师避免烧板风险,提升电源系统稳定性。

weixin_28744423的博客 503

芯片散热技术突破:多尺度结构与VC集成方案解析

在半导体技术快速发展的背景下,芯片散热成为制约性能提升的关键瓶颈。传统散热技术如风冷和水冷已接近物理极限,而两相浸没式液冷技术凭借其超高传热系数成为新的解决方案。通过多尺度表面结构设计与真空腔均热板(Vapor Chamber)的集成创新,可以显著提升沸腾性能,降低沸腾起始温差(ONB)并突破临界热流密度(CHF)限制。这种技术在数据中心、高性能计算(HPC)和边缘计算等高热流密度场景中具有重要应用价值,能有效提升能效比(PUE)并降低能耗。

weixin_36288992的博客 155

定时器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

Ubuntu 22.04 安装 IsaacLab 2.1.0

本文介绍了IsaacLab的完整安装流程:1)创建Python3.10虚拟环境;2)安装PyTorch2.5.1(CUDA11.8);3)升级pip并安装IsaacSim4.5.0;4)克隆IsaacLab仓库;5)运行安装脚本(需接受EULA)。若遇cmake缺失错误,需执行sudo apt安装。安装完成后可通过Ant-v0训练任务验证,成功运行后将显示IsaacSim窗口和训练完成提示。注意:IsaacSim不同版本可共存于不同环境。

weixin_47880303的博客 2224

JUnit 单元测试

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

weixin_30546189的博客 474

从零构建:用Simulink搭建固定翼无人机六自由度模型的避坑指南

本文详细介绍了使用Simulink从零构建固定翼无人机六自由度动力学模型的完整流程和避坑指南。重点解析了模型架构设计、气动力计算、参数配置、仿真求解器选择等关键环节的常见问题与解决方案,帮助开发者快速建立准确可靠的无人机控制系统仿真模型。

hhh00的博客 1002

基于STM32平衡小车设计

随着智能硬件的发展,基于STM32的两轮智能平衡车作为一种新型的智能移动工具,具备较高的应用价值。本文旨在设计并实现一款基于STM32微控制器的智能平衡车系统,提升其稳定性和操控性,探索如何通过传感器数据和控制算法实现精确平衡控制。 本设计基于STM32微控制器,选择了STM32F103系列作为核心控制器,具有足够的处理能力和丰富的外设接口。系统通过MPU6050传感器获取三轴加速度和三轴陀螺仪数据,实现实时姿态检测。电机驱动部分采用合适的驱动模块,能够控制两个直流电机,并支持PWM调速。设计中还包括OL

m0_74026776的博客 2731

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

华为MetaERP PTP采购到应付全流程解析

摘要:本文系统解析华为MetaERP中的PTP(采购到应付)全流程管理方案,涵盖从采购申请到付款执行的完整业务流程。文章详细分解了PR、PO、GR、IV、AP等关键环节的财务核算规则,并提供了预算校验、库存更新等Python代码示例。同时阐述了IT落地架构设计,包括会计引擎配置、系统集成方案及银企直连支付接口实现。该方案通过三单匹配自动化和智能会计引擎,将处理效率提升10倍(200笔/人天→2000笔/人天),实现98%的自动化率,为集团企业提供了高效的数字化财务管理样板。文中所有技术方案均需根据实际场景调

金牌架构师 1743

Spring Boot整合Quartz定时任务框架

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

2501_90225546的博客 992

中科大大数据学院2023年保研夏令营机试题目【无offer,直接放题了~】(2023.07.22下午14:35-17:35考试)

给定一串数字,最后一个数是0表示结尾,表示数字串的终止,为无效数字。将该数字串存储在双向链表中,判断是否为回文串,若是,则输出Yes,否则输出No.

m0_51339444的博客 1922

LDRA Testbed软件静态分析_常见问题及处理

通过前面的几篇文章,LDRA Testbed软件静态分析的内容基本讲解完了,本篇文章将针对使用Testbed进行软件静态分析的常见问题进行介绍。 到此为止,LDRA Testbed软件静态分析的内容已经全部讲完,如果有问题,欢迎私信提问(不经常登录,回复可能不及时,见谅)。下一篇文章将开始讲解如何使用Testbed进行单元测试。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 2590

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring整合Quartz(七)

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

两个蝴蝶飞 987

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring boot整合quartz方法

简单的Spring boot整合Quartz方法

In23754的博客 6081

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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、付费专栏及课程。

余额充值