Quartz总结(四):动态修改定时器二
前文: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总结(四):动态修改定时器二相关推荐
- springBoot下使用quartz定时任务;动态修改任务执行时间
先上依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spri ...
- 关于动态修改定时器的时间间隔
定时器的时间间隔是不能修改的,只能不停的创建,清除,创建.做出时间间隔变换的表象 使用函数表达式和递归实现: var counter = 10; var myFunction = function() ...
- 动态修改参数cron的值来实现Spring自带定时器动态的执行任务
最近在做一个项目二次开发:安防系统中用到了Spring自带的定时器,本来已经实现了.但是考虑到最终会在多家保安公司上线,所以可能每家公司要求执行的定时器任务的执行周期是不会一样的,起初想着直接同意规定 ...
- 真三国无双8二十四项修改器风灵月影版
点击下载来源:真三国无双8二十四项修改器风灵月影版 真三国无双8修改器风灵月影顾名思义,就是由风灵月影大神专门为<真三国无双8(Dynasty Warriors 8)>量身打造的一款游戏辅 ...
- 前端入门篇(四十一)JS基础8动态修改网页内容(DOM操作)
基本概念: 1.DOM操作:JS动态修改网页内容 2.DOM树: 将html文件转换为机器能看得懂的数据结构: 包含document文档节点.标签节点.text文本节点.comment注释节点等: d ...
- ExtJs学习笔记(四)——动态修改store属性
做项目时遇到个需求,要求动态修改store传给后台的属性.试过用全局变量,参数值设为全局变量,动态修改全局变量的值,可是传给后台的属性没变.要通过store.attribute = value 来设置 ...
- SAP UI5 应用开发教程之三十六 - 使用 Chrome 开发者工具 Elements 标签动态修改 CSS 类试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- javascript 动态修改css样式
方法一:改变外联css文件,这里不讲这个. 方法二:通过改变claaName来改变样式,语法: obj.className = "style2";//或者 obj.setAttri ...
- 日志级别_SpringBoot实战(十三):Admin动态修改日志级别
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性 ...
最新文章
- 获取序列全排列Java,java中全排列的生成算法汇总
- 未来中国最受宠的人才
- Docker容器内部署Java微服务的内存限制问题
- 一道问题引出的python中可变数据类型与不可变数据类型
- ISAPI_Rewrite规则
- javascript:Location对象的使用简介
- python 模拟人生
- npm下载require
- 蓝牙协议 Bluetooth Profile —— GAVDP 中文翻译版
- linux 环境变量复制,LINUX系统环境变量PATH ,cp命令 ,mv命令,文档查看cat/more/less/head/tail...
- linux commen cmd
- 二、TIPTOP命名原则和目录配置—TIPTOP GP ERP二次开发新手教程
- 苹果app禁止手势退出
- 中国InGaAs APD模块市场深度研究分析报告
- 关于java集合的查找和删除的小程序
- 计算机在水产养殖学中的应用,计算机视觉技术在水产养殖中的应用
- 体育馆场地管理系统1.0-2.0
- 浅析P2P:两个没有公网IP的终端如何进行通信?
- 百度网盘不限速使用方法
- Bailian4031 瑞士轮【比赛成绩计算】