`

Spring Quartz1.8.x

 
阅读更多
Spring Quartz 2.x http://panyongzheng.iteye.com/blog/2261376

spring--quartz的定时调度的maven部署 http://firezhfox.iteye.com/blog/1770575
Spring中Quartz的配置 http://www.cnblogs.com/kay/archive/2007/11/02/947372.html

spring 3 中使用注解的方式来进行任务调度http://blog.csdn.net/remote_roamer/article/details/6573173
spring定时器用Annotation实现 http://simple1024.iteye.com/blog/1109411


Spring3.x集成Quartz 版本问题 http://www.cnblogs.com/Irving/archive/2013/03/11/2953894.html
版本错误的解决方式:java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class
几种方式
1.降低Quartz版本,降到1.X (我的是quartz-1.8.6)
2.升级Spring版本到3.1+,将原来的**TriggerBean替换成**TriggerFactoryBean,例如CronTriggerBean 就可以替换成 CronTriggerFactoryBean。
3.Spring3.x中基于注解


注解:
@Scheduled(cron="0,10,20,30,40,50 * * * * ?")   //需要注意@Scheduled这个注解,它可配置多个属性:cron\fixedDelay\fixedRate


一。关于cron表达式:

Cron 表达式包括以下 7 个字段:

    秒
    分
    小时
    月内日期
    月
    周内日期
    年(可选字段)
二。特殊字符:

Cron 触发器利用一系列特殊字符,如下所示:

    反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。

    问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。

    在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。

    井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。

    星号(*)字符是通配字符,表示该字段可以接受任何可能的值。

字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /

表达式意义
"0 0 12 * * ?" 每天中午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期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2: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 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
每天早上6点

0 6 * * *

每两个小时

0 */2 * * *
晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * *

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3
1月1日早上4点

0 4 1 1 *

更多详细内容:
http://www.iteye.com/topic/117244




警告: 如果使用shiro-quartz, 那么shiro-quartz对应quartz的版本是1.6.x, 所以无法使用高版本的quartz, 所以尽可能不要使用shiro-quartz





Spring版本升级变更
Spring3 = > Spring 4
CronTriggerBean ==> CronTriggerFactoryBean
JobDetailBean ==> JobDetailFactoryBean

源代码:
pom.xml
=========================================================
		<dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-core</artifactId>  
            <version>4.0.5.RELEASE</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-context</artifactId>  
            <version>4.0.5.RELEASE</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-context-support</artifactId>  
            <version>4.0.5.RELEASE</version>  
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>1.8.6</version>
        </dependency>



applicationContext-quartz.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"
       xmlns:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    	http://www.springframework.org/schema/beans/spring-beans.xsd
    	http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    <!-- 使用配置的方式来配置定时任务 -->
    <!-- 要调用的工作类 -->
    <bean id="quartzJob" class="com.quartz.QuartzJob1"></bean>
    <!-- 定义调用对象和调用对象的方法 -->
    <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject">
            <ref bean="quartzJob"/>
        </property>
        <!-- 调用类中的方法 -->
        <property name="targetMethod">
            <value>work</value>
        </property>
    </bean>
    <!-- 定义触发时间 -->
    <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="jobtask"/>
        </property>
        <!-- cron表达式 -->
        <property name="cronExpression">
            <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
        </property>
    </bean>
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
    <bean id="startQuertz" lazy-init="false" autowire="no"
          class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="doTime"/>
            </list>
        </property>
    </bean>


    <!-- 使用注解的方式来扫描定时任务  -->
    <!--  定时器开关  开始-->
    <task:annotation-driven/>
    <!--  定时器开关  结束-->
    <task:scheduled-tasks>
        <task:scheduled ref="quartzJob3" method="work" cron="1/4 * * * * ?"/>
    </task:scheduled-tasks>
</beans>


三个定时器执行类
================================
package com.quartz;

/**
 * Created by Administrator on 14-6-17.
 */
public class QuartzJob1 {
    public void work() {
        System.out.println("任务调度------------------------------QuartzJob1");
    }
}






package com.quartz;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class QuartzJob2 {
    @Scheduled(fixedDelay = 3000)
    public void work()
    {
        System.out.println("任务调度------------------------------QuartzJob2");
    }
}






package com.quartz;
import org.springframework.stereotype.Service;

@Service
public class QuartzJob3 {
    public void work()
    {
        System.out.println("任务调度------------------------------QuartzJob3");
    }
}





一个可以做Application方式的测试类
package com;

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

public class MainTest
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        System.out.println("Test start.");
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-quartz.xml");
        //如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
        //context.getBean("startQuertz");
        System.out.print("Test end..");


    }

}
分享到:
评论

相关推荐

    spring3整合quartz1.8和spring3整合quartz2.2两个版本示例

    本示例将探讨如何将 Spring 3 与 Quartz 1.8 和 2.2 版本进行整合,以实现高效的任务调度。 首先,我们来看 Spring 3 整合 Quartz 1.8 的步骤: 1. **引入依赖**:在项目中添加 Quartz 和 Spring 相关的库,确保...

    spring-context-support.jar

    spring-context-support.jar spring整合任务调度quartz必需jar 还需要quartz-all-x.x.x.jar quartz版本必需在1.8.x以下

    quartz-all-1.6.6.jar

    与Spring整合必须使用Quartz1.8.x及以下版本 否则报错 java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super ...

    Spring.3.x企业应用开发实战(完整版).part2

     《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练...

    quartz所需jar包 1.6.0、1.8.5、2.2.1三个版本

    - 使用`quartz-2.2.1.jar`时,可能需要额外引入一些依赖,比如Spring的整合包,以便更好地与其他应用框架集成。 在选择使用哪个版本时,应考虑项目需求、所使用的Java版本以及对性能和稳定性的要求。较新的版本...

    spring-boot-quartz-scheduler-email-scheduling:Spring Boot Quartz调度程序示例,用于调度稍后发送的电子邮件

    Java-1.8.x Maven-3.xx MySQL-5.xx 设定步骤 1.克隆应用程序 git clone https://github.com/callicoder/spring-boot-mysql-rest-api-tutorial.git 2.创建MySQL数据库 create database quartz_demo 3.根据您MySQL...

    Spring3.2.4+Quartz2.2.0 Demo

    quartz-1.8以前的配置 class="org.springframework.scheduling.quartz.CronTriggerBean"&gt; &lt;value&gt;0/1 * * * * ? --&gt; &lt;!-- quartz-2.x的配置 --&gt; class="org.springframework....

    Spring3.x企业应用开发实战(完整版) part1

     《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练...

    MF00830-springboot固定设备资产管理源码.zip

    基于springboot+layui固定设备资产管理系统源码 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。...JDK:JDK 1.8.100 (小版本100以上,但仅支持1.8) 数据库:Mysql 5.7.X,OceanBase数据库

    计算机毕业设计:基于springboot、vue大学生实习管理系统设计与实现.zip

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1...

    Java项目-web版固定资产管理系统源码

    Spring 5.0.19 Shiro 1.6.0 MyBatis-Plus 3.0.7.1 MyBatis 3.4.6 Druid 1.1.24 Easypoi 4.1.3 Quartz 2.3.2 UFLO 2.1.5(流程引擎) K-form-design 3.x(表单) Angular 1.x 所需环境 操作系统:Window、推荐Linux ...

    Spring攻略(第二版 中文高清版).part1

    6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...

    Spring攻略(第二版 中文高清版).part2

    6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...

    基于SpringBoot + Vue 开发的前后端分离外卖点单系统,采用Shiro进行权限管理,支持微信登录、Redis缓存

    14.x.x |## 项目截图## 项目备注1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、...

    SpringBoot详解.doc

    SpringBoot并非Spring框架的替代品,而是旨在简化Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如Redis、MongoDB、JPA、RabbitMQ、Quartz等,使得这些第三方库几乎可以零配置地开箱即用。...

    基于Java开发的派单管理系统demo源码+项目说明+sql数据库(课程大作业).zip

    - 定时器:Quartz 2.3 - 数据库连接池:Druid 1.0 - 日志管理:SLF4J 1.7、Log4j - 页面交互:Vue2.x - 缓存:redis 2.8 - 手机页面:weui 软件需求** - JDK1.8+ - MySQL5.5+ - Tomcat7.0+ - Maven3.0+ **本地...

    基于springboot的设备管理系统+源代码+文档说明

    - JDK1.8 - MySQL5.5+ - Maven3.0+ **本地部署** - 通过git下载源码 - 创建数据库renren_security,数据库编码为UTF-8 - 执行db/mysql.sql文件,初始化数据【按需导入表结构及数据】 - 导入仓库、仓位、设备...

    J2eeFAST企业级快速开发平台 v2.0.8

    1、需要准备环境Mysql5.7以上、JDK1.8、Maven3.3、Redis4.X以上、开发工具eclipse或者IEDA。 2、下载源码git clone https://gitee.com/zhouhuanOGP/J2EEFAST.git。 3、编译代码找到根目录下pom.xml,执行mvn clean ...

    J2eeFAST企业级快速开发平台-其他

    Quartz数据库连接池:Druid 1.10.1数据库: Mysql5.7分布式缓存数据库: Redis 4.0.9工具类:Hutool 4.5.8工作流引擎:flowable 6.4.2J2eeFAST安装教程:1、需要准备环境Mysql5.7以上、JDK1.8、Maven3.3、Redis4.X以上...

Global site tag (gtag.js) - Google Analytics