`
莹nyynew
  • 浏览: 4617 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

spring 动态定时器

    博客分类:
  • SSH
阅读更多

<引用于某一博客时间太长忘记-连接了>

动态定时器:执行任务的时间由程序自己控制,而不是由配置文件决定。

定时器的定时的核心在于cronException

1.  <property name="cronExpression">    

2.                <value>0/10 * * * * ?</value>   

3.   </property>

 

 

如果我们能够将此处动态设置,也就实现了动态定时器。所以,动态定时器的核心在于对于这个参数的设置cronException

。静态的是写在配置文件中,动态的是写到程序中,具体怎样动态的写到程序中的呢?看下面的例子:首先是运行环境: spring2.5.6+quartz1.8,相关需要引入的jar和配置文件过程此处略过

 

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"  

 

4.        xmlns:aop="http://www.springframework.org/schema/aop"  

 

5.        xmlns:tx="http://www.springframework.org/schema/tx"  

 

6.        xsi:schemaLocation="http://www.springframework.org/schema/beans  

 

7.        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  

 

8.        http://www.springframework.org/schema/aop  

 

9.        http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  

 

10.      http://www.springframework.org/schema/tx  

 

11.      http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"  

 

12.      default-autowire="no" default-lazy-init="false">   

 

13.    

 

14.    <!-- 配置spring响应触发器的入口 -->  

 

15.    <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">    

 

16.         <property name="triggers">    

 

17.             <list>    

 

18.                 <ref local="cronTrigger"/>    

 

19.             </list>    

 

20.         </property>    

 

21.    </bean>    

 

22.    <bean id="scheduleInfoAction" class="test.ScheduleInfoAction"/>  

 

23.      

 

24.      

 

25.    <!-- 此处注意:静态定时器的class为: org.springframework.scheduling.quartz.CronTriggerBean   

 

26.        我用了自己定义的类,此类继承了静态定时器的类,并将执行任务的时间设置放到了类的构造方法中,实现动态定时器的一种方式。  

 

27.    -->  

 

28.   <bean id="cronTrigger" class="test.InitCronTrigger">   

 

29.          <property name="jobDetail" ref="jobDetail"/>    

 

30.          <!--   

 

31.          <property name="cronExpression">    

 

32.              <value>0/10 * * * * ?</value>    

 

33.          </property>    

 

34.           -->  

 

35.   </bean>   

 

36.   <!-- 配置执行任务的类和方法。 -->  

 

37.     <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    

 

38.         <property name="targetObject" ref="scheduleInfoAction"/><!-- 执行任务的方法 -->    

 

39.         <property name="targetMethod" value="reScheduleJob"/><!-- 执行任务的方法,此处方法不带参数,即便实际的方法带参数了,执行过程也会将参数略掉 -->    

 

40.         <!-- concurrent设为false,多个job不会并发运行 -->    

 

41.         <property name="concurrent" value="false"/>    

 

42.     </bean>    

 

43.</beans>    

1.  package test;  

2.  import java.text.SimpleDateFormat;  

3.  import java.util.Date;  

4.    

5.  import org.apache.log4j.Logger;  

6.      

7.  //执行任务的类  

8.  public class ScheduleInfoAction{    

9.  //    Logger logger = Logger.getLogger(ScheduleInfoAction.class);     

10.    //执行任务的方法  

11.    public void reScheduleJob()  {    

12.        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  

13.        System.out.println("执行操作"+dateFormat.format(new Date()));  

14.    }    

15.}    

16.  

17.  

18.package test;  

19.  

20.import java.io.Serializable;  

21.import java.text.ParseException;  

22.  

23.import org.springframework.scheduling.quartz.CronTriggerBean;  

24.  

25.//继承org.springframework.scheduling.quartz.CronTriggerBean  

26.//父类就是静态定时器中用到的触发器  

27.public class InitCronTrigger extends CronTriggerBean implements Serializable {    

28.    

29.    public InitCronTrigger() throws ParseException {  

30.        setCronExpression(getCronExceptionDB());  //在构造方法中设置cronException参数  

31.    }  

32.    private String getCronExceptionDB(){    

33.        String sql = "select CRON from t_test_task_trigger where available = 1 and trigger_name = 'cronTrigger'";    

34.        System.out.println("*****" + sql);    

35.        return "* * * 11 12 ?"//此处作为测试,直接返回结果,可以根据需要从数据库中读取  

36.    }    

37.}    

 

 

 

 

     

 

 

分享到:
评论

相关推荐

    Spring动态定时器

    ### Spring动态定时器详解 #### 一、动态定时任务概念 动态定时任务,是指由用户或系统根据实际需求动态设定的定时任务。这类任务的触发时间并非固定不变,而是可以根据实时情况灵活调整。传统上,配置定时任务...

    spring动态定时器封装

    本文将深入探讨如何在Spring框架中进行动态定时器的封装,结合标签"源码"和"工具",我们将探讨Spring与Quartz库的整合,以及如何通过源码理解其实现机制。 首先,让我们了解一下Spring的定时任务支持。Spring提供了...

    spring动态定时器

    标题中的“spring动态定时器”指的是Spring框架中的定时任务功能,它允许我们在应用程序运行时动态地添加、修改或删除定时任务。Spring提供了两种主要的方式来实现定时任务:`org.springframework.scheduling.quartz...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...

    spring定时器 spring定时器

    Spring定时器还支持动态修改任务执行计划,例如通过`ThreadPoolTaskScheduler`或`ConcurrentTaskScheduler`来调整线程池大小,控制并发执行的任务数量。此外,我们还可以通过`@Scheduled`注解的`initialDelay`属性来...

    spring设置动态定时任务

    【Spring 动态定时任务详解】 在 Spring 中,动态定时任务是一种允许用户在不重启服务的情况下,自由调整任务执行时间的机制。这种功能通常通过集成第三方定时任务框架,如 Quartz,来实现。Quartz 是一个功能强大...

    Spring Quartz 定时器示例(Web工程版)

    Spring Quartz 定时器示例(Web工程版),欢迎下载。

    定时器(spring管理),但是不是spring的定时器

    在网上找了很多定时器的实现,主要有2种:一是继承java.util.TimerTask,一种是使用Quartz,我开始选用了Quartz,但是Common-collection.jar出了问题,后来就都不用了,自己写了一个普通类,用spring的AOP对方法进行拦截,...

    spring 定时器的两种实现

    在Spring框架中,有两种主要的方法来实现定时任务:Spring自带的`@Scheduled`注解和引入第三方库Quartz。这两种方法都可以帮助开发者在特定的时间点执行任务,为应用程序添加计划任务的能力。 首先,我们来看看使用...

    spring实现定时器

    ### Spring 实现定时器 在Java开发领域,Spring框架因其高度灵活、强大的功能以及广泛的社区支持而备受青睐。其中,Spring框架提供了多种实现定时任务的方法,包括但不限于使用`...

    Spring的定时器动态修改参数cron的值

    本篇文章将深入探讨如何动态地修改Spring定时器的cron表达式,以便任务能够根据业务需求进行实时调整。 首先,我们需要了解Spring中的定时任务是如何配置的。通常,我们会在Spring的配置文件中使用`@...

    java 定时器 spring 定时器

    Java定时器和Spring定时器是Java开发中用于执行周期性任务的重要工具,它们在系统维护、数据同步、报告生成等场景中发挥着关键作用。本文将深入探讨这两个概念,以及如何在Spring框架中配置和使用定时器。 首先,...

    spring和java定时器

    首先,我们来看Spring定时器。Spring使用的是Quartz库来实现定时任务管理。在给出的例子中,可以看到配置文件中定义了几个关键的bean: 1. `zhang`:这是被调度的任务bean,它包含了实际执行定时任务的方法。在这个...

    spring的定时器设置

    在本主题"spring的定时器设置"中,我们将深入探讨Spring如何配置定时任务,主要关注2.x和3.x版本的区别。 一、Spring 2.x 定时任务 在Spring 2.x中,定时任务主要是通过`org.springframework.scheduling.timer`包...

    web spring 定时器

    Spring的定时器功能使得开发者能够轻松地实现计划性的任务,例如数据清理、日志备份或者发送邮件等周期性操作。本文将深入探讨Spring中的定时器特性,以及如何在Java环境中结合Quartz库进行更高级的定时任务整合。 ...

    spring定时器spring定时器spring定时器

    spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器

    Spring Quartz定时器

    Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器

    spring2.5 定时器任务

    ### Spring2.5定时器任务实现机制与配置详解 #### 一、Spring2.5定时器任务概述 在Spring框架2.5版本中,提供了强大的定时任务管理功能,支持多种方式来实现定时任务的调度与执行。这为开发人员提供了一个灵活且...

    springAop与spring定时器

    Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,通过在程序运行时动态地将代码插入到方法调用中,来实现跨切面的关注点,如日志记录、性能监控、事务管理等。而Spring...

    spring定时器简单的demo

    Spring提供了Spring Task模块来实现定时任务,也就是我们常说的Spring定时器。这个"spring定时器简单的demo"应该包含了一个使用Spring Task实现简单定时任务的例子。 首先,Spring Task的配置通常在`...

Global site tag (gtag.js) - Google Analytics