jar包使用的Maven库管理的,在这就不罗列了,注意下只有spring3.x以上的版本才支持quartz2.x的版本。

配置文件:

<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx" 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.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
default-autowire="byName" default-lazy-init="false"> <!-- 定时任务配置 scheduler 方式 注解 暂时不支持动态更新 -->
<context:component-scan base-package="org.core.timer" />
<task:executor id="executor" pool-size="5" />
<task:scheduler id="scheduler" pool-size="10" /> <bean id="taskJob" class="orgcore.timer.Job"/>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="group" value="job_work"/>
<property name="name" value="job_work_name"/>
<!--false表示等上一个任务执行完后再开启新的任务-->
<property name="concurrent" value="false"/>
<property name="targetObject">
<ref bean="taskJob"/>
</property>
<property name="targetMethod">
<value>oneOClockPerDay</value>
</property>
</bean> <!-- 调度触发器 -->
<bean id="taskDemoServiceTaskCronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="name" value="taskDemoServiceTaskCronTrigger"/>
<property name="group" value="DEFAULT"/>
<property name="jobDetail">
<ref bean="jobDetail" />
</property>
<property name="cronExpression" value="0/5 * * * * ?"/> </bean>
<!-- 定时任务调度器 -->
<bean id="schedulerFactory" lazy-init="false" autowire="no"
class="org.springframework.schedling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!--<ref bean="taskDemoServiceTaskCronTrigger"></ref>-->
</list>
</property>
</bean> </beans>
由于本人是新手,更深的层次我也不懂,就简单罗列下我理解的东西,各位看官请多指教!
在这个配置文件中,这是实现了一个简单的任务,
taskJob:我自己定义的一个job类,没有实现Quartz的job接口,使用配置文件的方式实现。
jobDetail:用上面定义好的taskJob来填充jobDetail,
<property name="targetObject">
<ref bean="taskJob"/>
</property>
<property name="targetMethod">
<value>oneOClockPerDay</value>
</property>
使用这种方式把自定义job类绑定,触发时执行类里的oneOClockPerDay方法
public class Job {

    public void oneOClockPerDay(){
org.jeecgframework.core.util.LogUtil.info("1h");
System.out.println("===============asda========================");
} }
taskDemoServiceTaskCronTrigger:自定义的CronTrigge触发器,绑定好上变设定好的设置好的jobDetail,设置好触发时间。
schedulerFactory:scheduler工厂,lazy-init="false" autowire="no"这两个设置可以在tomcat启动时触发定时任务。<ref bean="taskDemoServiceTaskCronTrigger">在这里设置好配置好的触发器
启动就能实现简单的定时任务。 上边所说的是在配置文件配置好的定时任务,接下来我们实现动态的定时任务。(PS:我觉得配置文件只需要加上schedulerFactory的配置就可以了)
废话不多说,直接粘代码(我也说不明白..... 哈哈哈哈) 创建/更新任务:
    public void creatJob(String triggerName,String groupName,String cronExpression ) {

        JobDetail jobDetail=null;
CronTrigger trigger=null;
TriggerKey triggerKey = new TriggerKey(triggerName,groupName);
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression ); try {

trigger= (CronTrigger) schedulerFactory.getTrigger(triggerKey);
//判断触发器是否存在,存在更新,不存在创建
if(trigger!=null){
trigger=trigger.getTriggerBuilder().withIdentity(triggerKey)
.withSchedule(scheduleBuilder).build();
//按照新的参数重新构建任务
schedulerFactory.rescheduleJob(triggerKey,trigger); }else {
//QuartzJobFactory 这是自定义的job类 继承job接口 这就是不同于在配置文件中配置job类的另一种方法
jobDetail = JobBuilder.newJob(QuartzJobFactory.class).withIdentity(triggerName, groupName).build();
trigger = TriggerBuilder.newTrigger().
withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
//创建任务,配置文件schedulerFactory已经配置为tomcat启动后自启动,就不需要schedule.strat()启动了
schedulerFactory.scheduleJob(jobDetail,trigger); } } catch (Exception e) { } }

暂停/开始触发器:

public boolean startOrStop(String triggerName,
boolean start) {
TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, Scheduler.DEFAULT_GROUP);
//获取trigger,即在spring配置文件中定义的 bean id="myTrigger"
try {
if (start) {
schedulerFactory.resumeTrigger(triggerKey);
return true;
} else {
schedulerFactory.pauseTrigger(triggerKey);
return true;
}
} catch (SchedulerException e) {
e.printStackTrace();
return false;
} }

删除任务:

public voiddel(String triggerName,String groupName) throws SchedulerException {

        TriggerKey triggerKey=new TriggerKey(triggerName,groupName);
schedulerFactory.pauseTrigger(triggerKey);//停止触发器
schedulerFactory.unscheduleJob(triggerKey);//移除触发器
schedulerFactory.deleteJob(JobKey.
jobKey(triggerName,groupName);//删除任务
}

自定义的QuartzJobFactory类

public class QuartzJobFactory implements org.quartz.Job {

    @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("任务成功运行"); }
}

												

Spring 4.2.5 + Quartz 2.2.0整合的更多相关文章

  1. spring利用javamail,quartz定时发送邮件 <转>

    原文地址:spring利用javamail,quartz定时发送邮件 <转>作者:物是人非 spring提供的定时发送邮件功能,下面是一个简单的例子以供大家参考,首先从spring配置文件 ...

  2. 信步漫谈之Quartz—分布式调度(整合spring早期版本【低于spring3.1】)

    一.环境 使用的jar包:spring2.5.6.quartz1.8.6 二.注意点 因为spring内置的quartz版本变化,所以存在spring和quartz版本接口兼容情况,如下: 1)spr ...

  3. 项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度

    前言 系列文章:[传送门] 项目需求: http://www.cnblogs.com/Alandre/p/3733249.html 上一博客写的是基本调度,后来这只能用于,像每天定个时间 进行数据库备 ...

  4. 项目ITP(五) spring4.0 整合 Quartz 实现任务调度

    前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...

  5. Spring定时(任务)刷新-quartz

    Quartz是一个完全由java编写的开源作业调度框架.他可以与J2EE.J2SE集成,用与处理定时任务.定时刷新的需求.此处使用为与Spring项目集成. 在SpringMVC项目中使用quartz ...

  6. Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总

    Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...

  7. spring多个定时任务quartz配置

    spring多个定时任务quartz配置 <?xml version=”1.0″ encoding=”UTF-8″?> <beans xmlns=”http://www.spring ...

  8. Spring/Spring boot正确集成Quartz及解决@Autowired失效问题

    周五检查以前Spring boot集成Quartz项目的时候,发现配置错误,因此通过阅读源码的方式,探索Spring正确集成Quartz的方式. 问题发现 检查去年的项目代码,发现关于QuartzJo ...

  9. Quartz.net 2.0的使用说明

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于WinForm和ASP.NET应用中.它提供了巨大的灵活性而不牺牲 ...

随机推荐

  1. C语言第一次博客作业

    一,PTA实验作业 题目1.温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代 ...

  2. eventProxyAPI(转)

    EventProxy 仅仅是一个很轻量的工具,但是能够带来一种事件式编程的思维变化.有几个特点: 利用事件机制解耦复杂业务逻辑 移除被广为诟病的深度callback嵌套问题 将串行等待变成并行等待,提 ...

  3. Java获取键盘输入

    方法一:在控制台接收字符串并将其打印出来,使用BufferedReader和InputStreamReader类实现 import java.io.*; public class Demo { pub ...

  4. Java中的懒汉式单例与饿汉式单例实例详解

    懒汉式单例:线程非安全,当被调用的时候才创建实例,效率较高 public class LazySingleton { private static LazySingleton lazySingleto ...

  5. Git详细教程(1)---个人Git的基本使用

    分布式版本控制系统--git 一.什么是Git 1.Git是什么 Git是目前世界上最先进的分布式版本控制系统(没有之一). 实际上版本控制系统有如下几个: 1) CVS 2)  SVN 3) Git ...

  6. u3d材质Tiling和Offset意义以及TRANSFORM_TEX

    1. TRANSFORM_TEX主要作用是拿顶点的uv去和材质球的tiling和offset作运算, 确保材质球里的缩放和偏移设置是正确的 下面这两个函数是等价的.o.uv =   TRANSFORM ...

  7. Java基础学习笔记二十六 JDBC

    什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...

  8. [开源] yvm - 自制Java虚拟机

    项目地址 : https://github.com/racaljk/yvm 虚拟机现在已可运行(不过还有很多待发现待修复的bugs),已支持语言特性有: Java基本算术运算,流程控制语句,面向对象. ...

  9. nodejs安装和卸载

    Ubuntu 上安装 Node.js 方式一:直接安装    一.安装 1.$ sudo apt-get install nodejs2.$ sudo apt-get install npm二.升级 ...

  10. 听翁恺老师mooc笔记(14)--格式化的输入与输出

    关于C语言如何做文件和底层操作: 文件操作,从根本上说,和C语言无关.这部分的内容,是教你如何使用C语言的标准库所提供的一系列函数来操作文件,最基本的最原始的文件操作.你需要理解,我们在这部分所学习的 ...