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. 常见的if语句shell脚本

    常见的if语句shell脚本 author :headsen  chen  2017-10-17  15:00:07 1,cat if.sh 2, cat  if2.sh

  2. python爬微信公众号前10篇历史文章(1)-思路概览

    作为程序员,要时刻保持一颗好奇心和想要学习的姿态. 练习怎样利用搜狗微信爬取某指定微信公众号的历史文章.爬取微信公众号本身难度非常大,感谢搜狗提供了一个可以爬取数据的平台. 代码部分参考于: http ...

  3. Centos虚拟机克隆模板

    Centos6模板 IPTABLES/SELINUX # iptalbes -F # service iptables save 或 # /etc/init.d/iptables stop # chk ...

  4. 【阿里聚安全·安全周刊】500万台Android设备受感染|YouTube封杀枪支组装视频

    本周的七个关键词:  500万Android 设备受感染丨 黑客将矛头指向无线传输协议 丨  YouTube封杀枪支视频 丨 AMD将发布补丁 丨 Gooligan Android 僵尸网络 丨  N ...

  5. 1-3 hibernate核心对象关系映射 xxx.hbm.xml

    详见  http://www.cnblogs.com/biehongli/p/6532800.html 1 <?xml version="1.0" encoding='utf ...

  6. 测试框架Mocha

    NodeJS里最常用的测试框架估计就是mocha了.它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript ...

  7. spring-boot-devtools

    Create a new Maven Project  and  we have two class under the package com.example.demo like below scr ...

  8. Eclipse项目中web app libraries和 Referenced Libraries区别

    Referenced  Libraries是编译环境下使用的JAR包,所谓编译环境下使用的JAR包, 就是说你在Eclipse中进行源文件的编写的时候,所需要引用到的类都从Referenced  Li ...

  9. CountDownLatch 源码解析—— await()

    上一篇文章说了一下CountDownLatch的使用方法.这篇文章就从源码层面说一下await() 的原理. 我们已经知道await 能够让当前线程处于阻塞状态,直到锁存器计数为零(或者线程中断). ...

  10. 忘记oracle的sys密码该如何重置;附如何修改oracle数据库用户密码

    参考博客:http://blog.itpub.net/26015009/viewspace-717505/ 这里只说一种方法:使用ORAPWD.EXE 工具修改密码 打开命令提示符窗口,输入如下命令: ...