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

配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
  5. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  7. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  8. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  10. http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
  11. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
  12. default-autowire="byName" default-lazy-init="false">
  13.  
  14. <!-- 定时任务配置 scheduler 方式 注解 暂时不支持动态更新 -->
  15. <context:component-scan base-package="org.core.timer" />
  16. <task:executor id="executor" pool-size="5" />
  17. <task:scheduler id="scheduler" pool-size="10" />
  18.  
  19. <bean id="taskJob" class="orgcore.timer.Job"/>
  20. <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  21. <property name="group" value="job_work"/>
  22. <property name="name" value="job_work_name"/>
  23. <!--false表示等上一个任务执行完后再开启新的任务-->
  24. <property name="concurrent" value="false"/>
  25. <property name="targetObject">
  26. <ref bean="taskJob"/>
  27. </property>
  28. <property name="targetMethod">
  29. <value>oneOClockPerDay</value>
  30. </property>
  31. </bean>
  32.  
  33. <!-- 调度触发器 -->
  34. <bean id="taskDemoServiceTaskCronTrigger"
  35. class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
  36. <property name="name" value="taskDemoServiceTaskCronTrigger"/>
  37. <property name="group" value="DEFAULT"/>
  38. <property name="jobDetail">
  39. <ref bean="jobDetail" />
  40. </property>
  41. <property name="cronExpression" value="0/5 * * * * ?"/>
  42.  
  43. </bean>
  44. <!-- 定时任务调度器 -->
  45. <bean id="schedulerFactory" lazy-init="false" autowire="no"
  46. class="org.springframework.schedling.quartz.SchedulerFactoryBean">
  47. <property name="triggers">
  48. <list>
  49. <!--<ref bean="taskDemoServiceTaskCronTrigger"></ref>-->
  50. </list>
  51. </property>
  52. </bean>
  53.  
  54. </beans>
  1. 由于本人是新手,更深的层次我也不懂,就简单罗列下我理解的东西,各位看官请多指教!
    在这个配置文件中,这是实现了一个简单的任务,
  1. taskJob:我自己定义的一个job类,没有实现Quartzjob接口,使用配置文件的方式实现。
  1. jobDetail:用上面定义好的taskJob来填充jobDetail
  1. <property name="targetObject">
  2. <ref bean="taskJob"/>
  3. </property>
  4. <property name="targetMethod">
  5. <value>oneOClockPerDay</value>
  6. </property>
    使用这种方式把自定义job类绑定,触发时执行类里的oneOClockPerDay方法
  1. public class Job {
  2.  
  3. public void oneOClockPerDay(){
  4. org.jeecgframework.core.util.LogUtil.info("1h");
  5. System.out.println("===============asda========================");
  6. }
  7.  
  8. }
  1. taskDemoServiceTaskCronTrigger:自定义的CronTrigge触发器,绑定好上变设定好的设置好的jobDetail,设置好触发时间。
  1. schedulerFactoryscheduler工厂,lazy-init="false" autowire="no"这两个设置可以在tomcat启动时触发定时任务。<ref bean="taskDemoServiceTaskCronTrigger">在这里设置好配置好的触发器
    启动就能实现简单的定时任务。
  2.  
  3. 上边所说的是在配置文件配置好的定时任务,接下来我们实现动态的定时任务。(PS:我觉得配置文件只需要加上schedulerFactory的配置就可以了)
    废话不多说,直接粘代码(我也说不明白..... 哈哈哈哈)
  4.  
  5. 创建/更新任务:
  1. public void creatJob(String triggerName,String groupName,String cronExpression ) {
  2.  
  3. JobDetail jobDetail=null;
  4. CronTrigger trigger=null;
  5. TriggerKey triggerKey = new TriggerKey(triggerName,groupName);
  6. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression );
  7.  
  8. try {

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

暂停/开始触发器:

  1. public boolean startOrStop(String triggerName,
  2. boolean start) {
  3. TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, Scheduler.DEFAULT_GROUP);
  4. //获取trigger,即在spring配置文件中定义的 bean id="myTrigger"
  5. try {
  6. if (start) {
  7. schedulerFactory.resumeTrigger(triggerKey);
  8. return true;
  9. } else {
  10. schedulerFactory.pauseTrigger(triggerKey);
  11. return true;
  12. }
  13. } catch (SchedulerException e) {
  14. e.printStackTrace();
  15. return false;
  16. }
  17.  
  18. }

删除任务:

  1. public voiddel(String triggerName,String groupName) throws SchedulerException {
  2.  
  3. TriggerKey triggerKey=new TriggerKey(triggerName,groupName);
  4. schedulerFactory.pauseTrigger(triggerKey);//停止触发器
  5. schedulerFactory.unscheduleJob(triggerKey);//移除触发器
  6. schedulerFactory.deleteJob(JobKey.
  7. jobKey(triggerName,groupName);//删除任务
  8. }

自定义的QuartzJobFactory类

  1. public class QuartzJobFactory implements org.quartz.Job {
  2.  
  3. @Override
  4. public void execute(JobExecutionContext context) throws JobExecutionException {
  5. System.out.println("任务成功运行");
  6.  
  7. }
  8. }
  1.  
  1.  

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. ELK重难点总结和整体优化配置

    本文收录在Linux运维企业架构实战系列 做了几周的测试,踩了无数的坑,总结一下,全是干货,给大家分享~ 一.elk 实用知识点总结 1.编码转换问题(主要就是中文乱码) (1)input 中的cod ...

  2. js中的Hook

    1. 简单理解: hook(钩子)就是: 把将要执行的的函数或者一系列动作注册到一个统一的接口下面, 当应用程序调用此接口(即hook)时,就等于调用了这一系列动作.

  3. ng-if ng-show ng-hide区别(面试题)

    ng-if ng-show  ng-hide区别 实现原理方面: ng-show/ng-hide是通过修改css样式方式控制元素显示与隐藏,对应的DOM元素会一直存在于当前页面中: 而ng-if根据表 ...

  4. 【Bootstrap】 一些提示信息插件

    前端总是会有很多信息提示的时候,最简单的可以用javascript自带的alert,confirm等.这些虽然和js的配合很好,但是很丑. bootstrap给我们提供了一些不同的方案比如modal的 ...

  5. 【Zabbix】 ZBX的豆知识

    ZBX ZBX虽然看上去是个很庞大的系统,但是相对架构还是比较简单的,而且我接触比较长时间了,很多东西觉得没有什么记的必要,所以以这种零碎的形式来记录一些小知识点. ■ ZBX用户权限问题 ZBX用户 ...

  6. Redis --> Redis架构设计

    Redis架构设计 一.前言   Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列 ...

  7. 转载:解决微信OAuth2.0网页授权回调域名只能设置一个的问题

    项目地址:https://github.com/HADB/GetWeixinCode 说明:微信项目很多,但是回调域名有限,经常使用,做个笔记. 解决微信OAuth2.0网页授权只能设置一个回调域名的 ...

  8. 【数据结构】赫夫曼树的实现和模拟压缩(C++)

    赫夫曼(Huffman)树,由发明它的人物命名,又称最优树,是一类带权路径最短的二叉树,主要用于数据压缩传输. 赫夫曼树的构造过程相对比较简单,要理解赫夫曼数,要先了解赫夫曼编码. 对一组出现频率不同 ...

  9. Android中的layout_gravity和gravity的区别

    在Android的布局中,除了padding和margin容易弄混之外,还有layout_gravity和gravity.按照字面意思来说,layout_gravity就是相对于layout来设置的. ...

  10. JavaScript(第二天)【语法,变量】

    一.语法构成 区分大小写 ECMAScript中的一切,包括变量.函数名和操作符都是区分大小写的.例如:text和Text表示两种不同的变量.   标识符 所谓标识符,就是指变量.函数.属性的名字,或 ...