前文:http://www.cnblogs.com/LiuChunfu/p/5598806.html 提到了一种动态修改定时器的方法,

其本质就是在job方法中注入Schedular的对象,从Schedular中获取Trigger(触发器),然后修改触发器的条件,重新启动。

前文中的方法,其实已经涉及到了循环调用。

Job类 => Job => Trigger => Schedular =>Job类。

这样是很容易发生问题的,也确实在实际项目中发生了问题,特别是当Schedular中有多个trigger的时候,注入实际的Job工作类时候报错了,产生的原因应该就是因为循环调用的问题。

方法2:

既然我们已经通过在Srping的Bean的XML文件中配置了SchedulerFactory产生的Bean,那么完全可以在实际的Job中通过@Resource或者@Autowired注入,再仔细一思考,仍然不对啊,这个和方法一的循环调用一样,会出现问题(实际也是)。

此时处理办法是:懒加载Schdular的类,用到的时候才加载。

代码如下:

<?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.xsd"><!-- 要执行任务的任务类。 --><bean id="testQuartz" class="com.mc.bsframe.job.TestJob"></bean><!-- 将需要执行的定时任务注入JOB中。 --><bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="testQuartz"></property><!-- 任务类中需要执行的方法 --><property name="targetMethod" value="doSomething"></property><!-- 上一次未执行完成的,要等待有再执行。 --><property name="concurrent" value="false"></property></bean><!-- 基本的定时器,会绑定具体的任务。 --><bean id="testTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><property name="jobDetail" ref="testJob"></property><property name="startDelay" value="3000"></property><property name="repeatInterval" value="200000"></property></bean><bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="testTrigger"></ref></list></property></bean>
</beans>

Java代码:

public class TestJob {@Autowiredprivate TestService testSevice;public void doSomething() {testSevice.sayHi();System.err.println("****:" + TimeUtils.getCurrentTime());}@Autowired@Qualifier("scheduler")  @Lazyprivate Scheduler scheduler;/*** 重置定时任务* @Title: restJob * @Description: TODO(这里用一句话描述这个方法的作用) * @param  @param time* @param  @throws Exception * @return void    返回类型 * @throws*/public void restJob(long time) throws Exception {TriggerKey triggerKey = new TriggerKey("testTrigger", Scheduler.DEFAULT_GROUP);SimpleTriggerImpl simpleTrigger = (SimpleTriggerImpl) scheduler.getTrigger(triggerKey);simpleTrigger.setRepeatInterval(time);scheduler.rescheduleJob(triggerKey, simpleTrigger);}
}

转载于:https://www.cnblogs.com/LiuChunfu/p/5605253.html

Quartz总结(四):动态修改定时器二相关推荐

  1. springBoot下使用quartz定时任务;动态修改任务执行时间

    先上依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spri ...

  2. 关于动态修改定时器的时间间隔

    定时器的时间间隔是不能修改的,只能不停的创建,清除,创建.做出时间间隔变换的表象 使用函数表达式和递归实现: var counter = 10; var myFunction = function() ...

  3. 动态修改参数cron的值来实现Spring自带定时器动态的执行任务

    最近在做一个项目二次开发:安防系统中用到了Spring自带的定时器,本来已经实现了.但是考虑到最终会在多家保安公司上线,所以可能每家公司要求执行的定时器任务的执行周期是不会一样的,起初想着直接同意规定 ...

  4. 真三国无双8二十四项修改器风灵月影版

    点击下载来源:真三国无双8二十四项修改器风灵月影版 真三国无双8修改器风灵月影顾名思义,就是由风灵月影大神专门为<真三国无双8(Dynasty Warriors 8)>量身打造的一款游戏辅 ...

  5. 前端入门篇(四十一)JS基础8动态修改网页内容(DOM操作)

    基本概念: 1.DOM操作:JS动态修改网页内容 2.DOM树: 将html文件转换为机器能看得懂的数据结构: 包含document文档节点.标签节点.text文本节点.comment注释节点等: d ...

  6. ExtJs学习笔记(四)——动态修改store属性

    做项目时遇到个需求,要求动态修改store传给后台的属性.试过用全局变量,参数值设为全局变量,动态修改全局变量的值,可是传给后台的属性没变.要通过store.attribute = value 来设置 ...

  7. SAP UI5 应用开发教程之三十六 - 使用 Chrome 开发者工具 Elements 标签动态修改 CSS 类试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  8. javascript 动态修改css样式

    方法一:改变外联css文件,这里不讲这个. 方法二:通过改变claaName来改变样式,语法: obj.className = "style2";//或者 obj.setAttri ...

  9. 日志级别_SpringBoot实战(十三):Admin动态修改日志级别

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性 ...

最新文章

  1. 获取序列全排列Java,java中全排列的生成算法汇总
  2. 未来中国最受宠的人才
  3. Docker容器内部署Java微服务的内存限制问题
  4. 一道问题引出的python中可变数据类型与不可变数据类型
  5. ISAPI_Rewrite规则
  6. javascript:Location对象的使用简介
  7. python 模拟人生
  8. npm下载require
  9. 蓝牙协议 Bluetooth Profile —— GAVDP 中文翻译版
  10. linux 环境变量复制,LINUX系统环境变量PATH ,cp命令 ,mv命令,文档查看cat/more/less/head/tail...
  11. linux commen cmd
  12. 二、TIPTOP命名原则和目录配置—TIPTOP GP ERP二次开发新手教程
  13. 苹果app禁止手势退出
  14. 中国InGaAs APD模块市场深度研究分析报告
  15. 关于java集合的查找和删除的小程序
  16. 计算机在水产养殖学中的应用,计算机视觉技术在水产养殖中的应用
  17. 体育馆场地管理系统1.0-2.0
  18. 浅析P2P:两个没有公网IP的终端如何进行通信?
  19. 百度网盘不限速使用方法
  20. Bailian4031 瑞士轮【比赛成绩计算】

热门文章

  1. 前端本地使用线上数据
  2. JDK 5.0 中的泛型类型学习
  3. TiKV 是如何存取数据的(下)
  4. WebCruiser Web Security Scanner
  5. React Native 轻松集成统计功能(iOS 篇)
  6. 解决gcc version 不匹配问题。
  7. Jekyll本地搭建开发环境以及Github部署流程
  8. JS学习:第一周——NO.1预解释
  9. 【2014华为校园招聘成都上机笔试题目】
  10. javascript 取table中内容