`
du_bo
  • 浏览: 41160 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类

Spring中的Quartz配置

 
阅读更多

首先我们来写一个被调度的类: package com.kay.quartz;

  1. public class QuartzJob  
  2. {  
  3.     public void work()  
  4.     {  
  5.     System.out.println("Quartz的任务调度!!!");  
  6.     }  

Spring的Quartz配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
  3.  
  4. <beans>      
  5.         <!-- 要调用的工作类 --> 
  6.         <bean id="quartzJob" class="com.kay.quartz.QuartzJob"></bean> 
  7.         <!-- 定义调用对象和调用对象的方法 --> 
  8.         <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
  9.             <!-- 调用的类 --> 
  10.             <property name="targetObject"> 
  11.                 <ref bean="quartzJob"/> 
  12.             </property> 
  13.             <!-- 调用类中的方法 --> 
  14.             <property name="targetMethod"> 
  15.                 <value>work</value> 
  16.             </property> 
  17.         </bean> 
  18.         <!-- 定义触发时间 --> 
  19.         <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
  20.             <property name="jobDetail"> 
  21.                 <ref bean="jobtask"/> 
  22.             </property> 
  23.             <!-- cron表达式 --> 
  24.             <property name="cronExpression"> 
  25.                 <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value> 
  26.             </property> 
  27.         </bean> 
  28.         <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  --> 
  29.         <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
  30.             <property name="triggers"> 
  31.                 <list> 
  32.                     <ref bean="doTime"/> 
  33.                 </list> 
  34.             </property> 
  35.         </bean> 
  36.       
  37. </beans>测试程序:  
  38. package com.kay.quartz;  
  39. import org.springframework.context.ApplicationContext;  
  40. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  41.  
  42. public class MainTest  
  43. {  
  44.     /**  
  45.      * @param args  
  46.      */  
  47.     public static void main(String[] args)  
  48.     {  
  49.         System.out.println("Test start.");  
  50.         ApplicationContext context = new ClassPathXmlApplicationContext("quartz-config.xml");  
  51.         //如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化  
  52.         //context.getBean("startQuertz");  
  53.         System.out.print("Test end..");        
  54.     }  

我们需要把log4j的配置文件放入src目录下,启动main类就可以了。

关于cron表达式(来自网络):

Cron 表达式包括以下 7 个字段:

秒 
分 
小时 
月内日期 
月 
周内日期 
年(可选字段) 
特殊字符

Cron 触发器利用一系列特殊字符,如下所示:

反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。

问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。

在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。

井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。

星号(*)字符是通配字符,表示该字段可以接受任何可能的值。 
字段 允许值 允许的特殊字符 
秒 0-59 , - * / 
分 0-59 , - * / 
小时 0-23 , - * / 
日期 1-31 , - * ? / L W C 
月份 1-12 或者 JAN-DEC , - * / 
星期 1-7 或者 SUN-SAT , - * ? / L C # 
年(可选) 留空, 1970-2099 , - * / 
表达式意义 
"0 0 12 * * ?" 每天中午12点触发 
"0 15 10 ? * *" 每天上午10:15触发 
"0 15 10 * * ?" 每天上午10:15触发 
"0 15 10 * * ? *" 每天上午10:15触发 
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发 
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 
"0 15 10 15 * ?" 每月15日上午10:15触发 
"0 15 10 L * ?" 每月最后一日的上午10:15触发 
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 
每天早上6点

0 6 * * *

每两个小时

0 */2 * * * 
晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * *

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 
1月1日早上4点

0 4 1 1 *

分享到:
评论

相关推荐

    关于spring中quartz的配置

    以下将详细介绍如何在Spring中配置Quartz以及相关知识点。 1. **引入依赖** 在开始配置之前,首先需要在项目的`pom.xml`或`build.gradle`文件中引入Quartz和Spring相关的依赖库。对于Maven项目,可以添加如下依赖...

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

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

    Spring中Quartz的配置

    在这段配置中,首先定义了要执行的任务对象`quartzJob`,然后通过`MethodInvokingJobDetailFactoryBean`指定了要执行的对象和方法。接着定义了触发器`doTime`,并通过`CronTriggerBean`设置了具体的触发时间。最后...

    spring-quartz配置

    spring-quartz的标准配置文件

    Spring + Quartz配置实例(转载)

    标题 "Spring + Quartz配置实例(转载)" 暗示了我们将讨论如何在Java环境中整合Spring框架与Quartz作业调度库的使用。Quartz是一个开源的作业调度库,它允许开发者安排任务以在特定时间执行,而Spring框架则是一个...

    spring+quartz demo

    在 Spring 配置中,可以使用 `&lt;bean&gt;` 标签创建 JobDetail 实例,并关联 Job 类。 3. **Trigger 配置**: Trigger 决定了 Job 的执行时间。可以使用 CronTrigger 或 SimpleTrigger,前者基于 Cron 表达式,后者...

    转:spring多个定时任务quartz配置

    本文将深入探讨如何在Spring中配置多个Quartz定时任务,并结合`quartz.properties`文件进行详细讲解。 首先,我们需要理解Quartz的基本概念。Quartz是开源的作业调度框架,允许应用程序在特定时间执行任务。它支持...

    Spring Quartz如何动态配置时间

    在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...

    spring 集成quartz 用数据库实现quartz的集群

    在Maven或Gradle的配置文件中,我们需要引入Quartz库以及Spring对Quartz的支持库。这些库将包含所有必要的类和接口,如`Scheduler`, `Job`, `Trigger`等,用于定义和管理定时任务。 接下来,配置Quartz。在Spring的...

    spring集成quartz集群配置

    这里,`myDS`是数据源的名称,需要与Spring配置中的`dataSource`引用匹配。 当多个Quartz节点在相同的数据库上运行时,它们会形成一个集群。每个节点都可以独立地调度和执行任务,而不会冲突。如果某个节点故障,...

    quartz和spring-quartz

    学习Quartz和Spring-Quartz,不仅需要理解它们的基本概念,还要掌握如何在实际项目中进行配置和使用。例如,创建一个定时任务,你需要定义Job类,配置Trigger,然后在Spring的配置文件中设置Scheduler。此外,熟悉...

    spring-quartz定时设置详细说明

    2. 配置 Quartz:在 Spring 的配置文件(如 `application.properties` 或 `application.yml`)中,可以设置 Quartz 的基本属性,如线程池大小、作业存储策略等。 ```properties # application.properties 示例 ...

    Java_Spring与Quartz的整合

    - 在Spring配置中,使用`&lt;bean&gt;`标签定义Trigger,并关联Job。 4. **启动Scheduler** - 在Spring应用启动时,通过`SchedulerFactoryBean`的`start()`方法启动Scheduler,开始监控并执行Job。 5. **动态管理Job**...

    Spring_QuartZDemo

    此外,Quartz还支持JobGroup(任务组)、TriggerGroup(触发器组)、JobDataMap(用于传递Job执行时的参数)等功能,这些都可以在Spring的配置中灵活运用。通过学习Spring_QuartZDemo,你可以掌握这些高级特性的用法...

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    2. 配置Scheduler:在Spring的配置文件中,使用`SchedulerFactoryBean`来初始化和配置Quartz Scheduler。可以设置如数据库存储、线程池大小等参数。 3. 创建Job类:定义一个实现了`org.quartz.Job`接口的类,这是...

    spring+quartz使用jar包

    在Spring中配置好数据库连接,Quartz会自动处理这部分。 8. **lib目录下的jar包**:在“lib”目录下,通常会包含Spring和Quartz的jar文件,以及它们的依赖库。例如,`spring-context.jar`、`spring-beans.jar`、`...

    Spring+quartz相关jar包.rar

    2. 配置 Scheduler:在 Spring 配置文件中,设置 Quartz 的 SchedulerFactoryBean,指定数据库存储(如果需要持久化任务信息)和相关的配置属性。 3. 定义 Job 和 Trigger:创建 Quartz 作业类(Job),实现 org....

    spring3配置quartz定时任务

    本文将详细介绍如何在Spring 3中配置Quartz来实现定时任务。 首先,理解定时任务的基本概念。定时任务是在指定时间点或按照一定规律自动执行的任务,这在业务系统中非常常见,例如数据清理、报表生成等。Quartz提供...

    spring 配置quartz需要的jar包

    在Java开发中,Spring框架与Quartz库的集成可以实现灵活且强大的定时任务管理。Spring提供了与Quartz的无缝整合,...同时,注意在生产环境中,可能还需要考虑集群环境下的Quartz配置,确保任务的正确执行和避免冲突。

    Spring -Quartz的配置

    本文将深入探讨如何在Spring框架中配置Quartz,以便利用其功能来执行计划的任务。 首先,我们需要理解Spring与Quartz结合的基本原理。Spring通过提供一个Quartz的JobFactory,可以集成Quartz到Spring容器中,这样...

Global site tag (gtag.js) - Google Analytics