spring定时器(二)

此定时器可重置定时时间。

1. spring的定时器配置文件application.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
 4     xmlns:context="http://www.springframework.org/schema/context" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
 6         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
 7         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
 8         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
 9         http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">
10
11     <!-- 定时器bean类定义 -->
12     <bean id="×××Daemon" class="com.×××.×××.×××Daemon">
13         <!-- 指定定时器调度工厂 -->
14         <property name="scheduler" ref="timingPrintSchedulerFactory" />
15         <!-- 向定时器注入bean -->
16         <property name="×××" ref="×××" />
17     </bean>
18
19     <!-- 任务1定义 -->
20     <bean id="×××DaemonJob"
21         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
22         <!-- 任务1所在的类 -->
23         <property name="targetObject" ref="×××Daemon" />
24         <!-- 任务1所对应的方法名 -->
25         <property name="targetMethod" value="executeInternal" />
26         <property name="concurrent" value="false" />
27     </bean>
28
29     <!-- 任务1触发器  -->
30     <bean id="×××JobTrigger"
31         class="org.springframework.scheduling.quartz.CronTriggerBean">
32         <property name="jobDetail" ref="×××DaemonJob"/>
33         <property name="cronExpression" value="0 0 0 ? * *"/>    <!-- 默认每天凌晨0点整打印  -->
34         <property name="startDelay" value="10000"/>         <!-- 延迟10秒(10000毫秒)启动 -->
35     </bean>
36
37     <!-- 重置定时时间任务  -->
38     <bean id="reset×××DaemonJob"
39         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
40         <property name="targetObject" ref="×××Daemon" />
41         <property name="targetMethod" value="resetJob" />
42         <property name="concurrent" value="false" />
43     </bean>
44
45     <!-- 重置定时时间任务触发器  -->
46     <bean id="reset×××JobTrigger"
47         class="org.springframework.scheduling.quartz.SimpleTriggerBean">
48         <property name="jobDetail" ref="reset×××DaemonJob"/>
49         <property name="repeatInterval" value="10000"/>            <!-- 每隔10秒扫描一次 -->
50         <property name="startDelay" value="10000"/>         <!-- 延迟10秒(10000毫秒)启动 -->
51     </bean>
52
53     <!-- 调度工厂,触发器集合 -->
54     <bean id="timingPrintSchedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
55         <property name="triggers">
56             <list>
57                 <ref bean="×××JobTrigger"/>
58                 <ref bean="reset×××JobTrigger"/>
59             </list>
60         </property>
61     </bean>
62
63 </beans>

2. 定时器对应的类

 1 import org.quartz.Scheduler;
 2 import org.springframework.scheduling.quartz.CronTriggerBean;
 3
 4
 5 public class ×××Daemon {
 6
 7     /**
 8      * 调度工厂,可取得所属的触发器
 9      */
10     private Scheduler scheduler;
11
12     /**
13      * 任务1执行的方法
14      */
15     protected void executeInternal(){
16         // To do something
17     }
18
19     /**
20      * 重置定时时间任务的方法
21      */
22     public void resetJob()throws Exception{
23         String cronExpression = transformTime(×××);// 时间格式如:03:30 下午
24         CronTriggerBean trigger =  (CronTriggerBean)scheduler.getTrigger("×××JobTrigger",Scheduler.DEFAULT_GROUP);
25         String originConExpression = trigger.getCronExpression();
26         if(!originConExpression.equalsIgnoreCase(cronExpression)){
27             trigger.setCronExpression(cronExpression);
28             scheduler.rescheduleJob("×××JobTrigger", Scheduler.DEFAULT_GROUP, trigger);
29         }
30     }
31
32     /**
33      * 将时间转换为cron表达式
34      * @param time 时间字符串,格式如:03:30 下午
35      * @return
36      */
37     private String transformTime(String time){
38         StringBuffer result = new StringBuffer();
39         String[] arr = time.split(" ");
40         String[] timeArr = arr[0].split(":");
41         result.append("0 "+timeArr[1]+" ");
42         if("上午".equalsIgnoreCase(arr[1])){
43             result.append(Integer.valueOf(timeArr[0])%12);
44         }else{
45             result.append(12+Integer.valueOf(timeArr[0])%12);
46         }
47         result.append(" ? * *");
48         return result.toString();
49     }
50
51     public Scheduler getScheduler() {
52         return scheduler;
53     }
54     public void setScheduler(Scheduler scheduler) {
55         this.scheduler = scheduler;
56     }
57
58
59 }

时间: 2024-10-17 15:20:56

spring定时器(二)的相关文章

Spring定时器的配置

Spring定时器的配置(注解+xml)方式 (2013-09-30 10:39:18)转载▼ 标签: spring定时器配置 spring定时器注解方式 spring定时器xml方式 spring配置 分类: Spring Spring 配置定时器(注解+xml)方式—整理 一.注解方式 1. 在Spring的配置文件ApplicationContext.xml,首先添加命名空间 xmlns:task="http://www.springframework.org/schema/task&qu

spring定时器设置(转自:http://my.oschina.net/LvSantorini/blog/520049)

转自:http://my.oschina.net/LvSantorini/blog/520049<!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 --> <bean id="msg_request" class="com.santorini.task.timer.MessageRequestTask"></bean> <!-- 定时器配置 --> <bean id

spring定时器

本人小菜鸟一枚,今天在公司看到一段spring定时器配置,自己总结一下! <!-- 定义调用对象和调用对象的方法 --><bean id="jobtask9" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><!-- 调用的类 --><property name="targetObject"&

Spring 定时器的使用

spring定时器应用 相关类: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean 配置定时远行方法 org.springframework.scheduling.quartz.CronTriggerBean 配置定时调度时间 org.springframework.scheduling.quartz.SchedulerFactoryBean 调度总控 MyEclipse自动生成项目,导入spring

[spring-framework]Spring定时器的配置和使用

开发中我们常常会做一些定时任务,这些任务有开始时间,并会按一定的周期或规则执行.如此我们在Java程序开发中使用定时器来处理定时任务. <!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 --> <bean id="msg_request" class="com.santorini.task.timer.MessageRequestTask"></bean> <!-- 定时器配

Spring定时器的配置和使用

开发中我们常常会做一些定时任务,这些任务有开始时间,并会按一定的周期或规则执行.如此我们在Java程序开发中使用定时器来处理定时任务. <!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 --> <bean id="msg_request" class="com.santorini.task.timer.MessageRequestTask"></bean> <!-- 定时器配

spring 定时器执行两次

spring错误笔记 spring定时器执行两次因为导入了两次 关于配置文件如下 <bean id="timeTaskService" class="xx.xxx.xxx.xxx.service.impl.na.TimeTaskService"/> <task:scheduled-tasks scheduler="myScheduler"><!--30秒执行一次 --> <task:scheduled r

攻城狮在路上(贰) Spring(二)--- Spring IoC概念介绍

一.IoC的概念: IoC(控制反转)是Spring容器的核心.另一种解释是DI(依赖注入),即让调用类对某一个接口的依赖关系由第三方注入,以移除调用类对某一个接口实现类的一览. 定义如此,由此可见,在面向接口编程的情况下,IoC可以很好的实现解耦,可以以配置的方式为程序提供所需要的接口实现类. 在实际程序开发中,我们只需要提供对应的接口及实现类,然后通过Spring的配置文件或者注解完成对依赖类的装配.二.IoC的类型: 1.通过构造函数: 此种方式的缺点是,在构造函数中注入之后一般会作为一个

Spring定时器技术终结者——采用Scheduled注释的方式实现Spring定时器

在Spring中有两种方式可以实现定时器的功能,分别是Scheduled注释方式和XML配置方式,本博客将介绍如何在Spring中使用Scheduled注释方式的方式实现定时器的功能,代码及相应的解释如下: 代码1-Spring配置文件(applicationContext.xml文件): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframe

Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解

原创整理不易,转载请注明出处:Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解 代码下载地址:http://www.zuidaima.com/share/1772648445103104.htm 有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz. 1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; p