spring 动态配置定时任务

来源:互联网 发布:沪昆高铁质量 知乎 编辑:程序博客网 时间:2024/06/05 19:31

在项目中经常会碰到定时执行的任务,且执行什么任务,及任务执行的时间都由用户自定义的需求。quartz是比较常用的定时器工具,并且在spring框架中也已经做了很好的集成,所以在以spring+hibernate+struts的主流架构中,我们可以采用quartz来做定时器任务的解决方案,下面,我们来看下如何在项目中使用quartz来做动态多任务定时器功能。

这是xml中配置信息

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><!-- 被执行类 --><bean id="testQuarzt" class="cmcc.gz.pmp.timetest.service.ScheduleInfoService"><property name="scheduler" ref="schedulerFactory" /></bean><!-- 将testQuarzt注入到job中 --><bean id="testQuartzJob"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="testQuarzt" /><property name="targetMethod" value="loadJob" /><property name="concurrent" value="false" /></bean><!-- 将job注入到定时触发器 --><bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="testQuartzJob" /><property name="cronExpression"><value>0/1 * * * * ?</value></property></bean><!-- 将触发器注入任务工程 --><bean id="schedulerFactory"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="testTrigger" /></list></property></bean></beans>

初始化时间

<span style="font-family: Arial, Helvetica, sans-serif;"><property name="cronExpression"></span>
<value>0/1 * * * * ?</value></property>

Class:“”,指定任务类

<bean id="testQuarzt" class="cmcc.gz.pmp.timetest.service.ScheduleInfoService"><property name="scheduler" ref="schedulerFactory" /></bean>

定时任务代码

public void resetJob(String cronExpression) throws SchedulerException, ParseException {<span style="white-space:pre"></span>//<span style="font-family: Arial, Helvetica, sans-serif;">cronExpression:动态传入的时间</span>// 运行时可通过动态注入的scheduler得到trigger,注意采用这种注入方式在有的项目中会有问题,如果遇到注入问题,可以采// 取在运行方法时候,获得bean来避免错误发生。CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger("testTrigger", Scheduler.DEFAULT_GROUP);<span style="white-space:pre"></span>//<span style="font-family: Arial, Helvetica, sans-serif;">testTrigger  需要和下面保持一致,反之则无法注入xml中</span>String originConExpression = trigger.getCronExpression();// 如果相等,则表示用户并没有重新设定数据库中的任务时间,这种情况不需要重新rescheduleJobSystem.out.println(originConExpression);if (!originConExpression.equalsIgnoreCase(cronExpression)) {trigger.setCronExpression(cronExpression);scheduler.rescheduleJob("testTrigger", Scheduler.DEFAULT_GROUP,trigger);//重新加载配置时间}}
                                             
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安装英雄联盟文件损坏怎么办 电脑玩lol运行内存不足怎么办 守望先锋账号冻结了怎么办 守望先锋服务器发生意外错误怎么办 在先锋社保缺一年上学怎么办 lol更新后反应很慢怎么办 电脑跳舞毯不正常电脑游戏怎么办 PS中缺失的字体怎么办 黑板墙不想要了怎么办 淘宝代练打坏了怎么办 绝地求生与ipad不兼容怎么办 小米手机玩绝地求生卡怎么办 绝地求生服务器目前非常繁忙怎么办 玩绝地求生手机发烫怎么办 绝地求生刺激战场延迟高怎么办 怀孕八个半月打喷嚏头疼怎么办 20岁打喷嚏漏尿怎么办 鼻炎犯了不停打喷嚏怎么办 鼻炎犯了不停打喷嚏流鼻涕怎么办 感冒鼻痒怎么办小窍门 腰扭了屁股也疼怎么办 小三把房子过户怎么办 小三把房子卖了怎么办 打印机ip地址变了怎么办 电脑ip地址错误不能上网怎么办 修改了注册表电脑无法启动怎么办 香水喷到衣服上有印怎么办 家里一股猫的味道怎么办 干菊花里面有虫怎么办 安装时显示程序已关闭怎么办 电脑一直重启开不了机怎么办 应用安装在sd卡打不开怎么办 安装ps打不开安装包怎么办 安装好的软件打不开怎么办? win10系统语言修改不了怎么办 一个月婴儿吵夜怎么办 玩游戏一直闪退怎么办 钱站一直闪退怎么办 win7重装连不上网怎么办 笔记本屏幕横过来了怎么办 3D贴图丢了怎么办