`
IT阿狸
  • 浏览: 67927 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring-Quartz

阅读更多

Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz。

 

首先,感谢刘波老师,提供了个例子给我学习。

 

需要导入的类库(这里用的是Spring2.5):

1.Spring 2.5 Core Libraries

2.Spring 2.5 Misc Libraries

3.Spring 2.5 AOP Libraries

 

一、被调度的类:

 

package org.newboy.biz;

import java.sql.Timestamp;
import java.util.Date;

/**
 * 需要定时运行的方法
 * 
 * @author newboy
 * 
 */
public class BusinessReport {

	// 初始一数字变量
	static long count = 0;

	/**
	 * 被调度的方法
	 */
	public void perform() {
		count++;
		System.out.println(new Timestamp(new Date().getTime()) + " count=" + count);
	}

}

 

二、Spring的配置文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

	<!-- 我的业务类 -->
	<bean id="businessReport" class="org.newboy.biz.BusinessReport" />

	<!-- 定义目标bean和bean中的方法 -->
	<bean id="reportTask"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!-- 相应的类 -->
		<property name="targetObject" ref="businessReport" />
		<!-- 相应的方法 -->
		<property name="targetMethod" value="perform" />
		<property name="concurrent" value="false" />
	</bean>

	<!-- 配置触发器,触发器加载哪些job,定义触发的时间 -->
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="reportTask" />
		<!-- 设置cron表达式 -->
		<property name="cronExpression" value="0-59 * * * * ?" />
	</bean>

	<!-- 配置quartz调度,指定加载哪些触发器 -->
	<bean id="startScheduler"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTrigger" />
			</list>
		</property>
	</bean>

</beans>

 

 

三、测试类:

 

package org.newboy.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * 测试类
 * @author newboy
 *
 */
public class TestBiz {

	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
	}

}

 

四、放入log4j.properties文件到src目录下

 

五、放入cron表达式.txt文件到src目录下,然后运行Main函数就OK了。

 

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

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

            1.秒

            2.分

            3.时

            4.月

            5.月内日期

            6.周内日期

            7.年(可选字段)

 

 六、Cron表达式的一些解释:

      

cronExpression格式说明

表达式: Seconds Minutes Hours Day-of-month Month Day-of-Week Year

说明:

表达式由6个或7个字符串组成,字符之间用空格分隔;前6个为必选项,year为可选项;

字符串的取值不区分大小写;

允许的值和特殊字符可单独使用或组合使用;

星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都触发。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月触发一次。

问号(?)表示不指定任何值,主要用于day of month 和day of week,当指定其中一个值的时候,另一个设置为问号,避免前后不一致。

L表示最后一天, 主要用于day of month 和day of week,每月的最后一天,每周的最后一天,用于day of month 时只能单独使用,用于day of week时可以组合使用,例如6L, 表示指定月的最后一个星期五.

W用于day of month, 表示离指定日期最近的工作日(周一至周五), 例如6W,如果这个月的第6天为周六,则表示周五(这个月的第5天);如果第6天为周日,则表示周一(这个月的第7天);如果第6天为工作日,则为当日;如果按正常推算的日期为上月或下月,则在本月内查找最近的工作日;

LW组合使用表示这个月的最后一个工作日;

#用于day of week, #号后面跟数字n表示本月的第n个X., 例如6#3 表示指定月的第三个星期五;

举例:
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触发

 

 七、demo

Spring-Quartz.zip

 

 

分享到:
评论

相关推荐

    quartz和spring-quartz

    Quartz和Spring-Quartz是两个在Java世界...“spring-quartz-demo”可能是一个完整的示例项目,你可以通过运行它来深入理解Quartz在Spring中的应用。通过研究这些资源,你可以更全面地掌握Quartz和Spring-Quartz的用法。

    Spring-quartz-demo Spring4.1.6 + quartz2.2.1

    本项目来源与网络,本人对项目...直接通过mvn 倒入项目,在Spring-quartz-demo\src\main\webapp\sql 有sql 建立数据库,表 启动tomcat 直接访问http://localhost:8080/Spring-quartz-demo/task/taskList.htm 就可以使用

    spring-quartz配置

    spring-quartz的标准配置文件

    spring-quartz定时设置详细说明

    &lt;groupId&gt;org.quartz-scheduler &lt;artifactId&gt;quartz &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-context-support ``` 2. 配置 Quartz:在 Spring 的配置文件(如 `application.properties` 或 `...

    spring-quartz-example

    在"spring-quartz-example"项目中,我们首先会看到Spring配置文件(如`applicationContext.xml`),这里会配置Spring的JobDetail和Trigger,这是Quartz的核心组件。JobDetail定义了任务的业务逻辑,而Trigger则决定...

    spring-quartz-021

    这个名为"spring-quartz-021"的项目显然演示了如何将这两者集成在一起,以实现基于corn表达式的任务调度。 首先,让我们深入了解Spring和Quartz的基础知识。Spring框架提供了一个全面的编程和配置模型,用于构建...

    spring-quartz-02

    在 "spring-quartz-02" 这个项目中,我们可以看到如何将 Spring 框架与 Quartz 整合,以实现定时任务的功能。这个 demo 的核心目标是展示如何配置和使用 Spring 对 Quartz 的支持,通过 Cron 表达式来定义任务的执行...

    spring整合quartz动态定时任务demo-spring-quartz-demo.zip

    这个"spring-quartz-demo"项目就是一个很好的示例,它展示了如何在Spring中整合Quartz以实现动态定时任务。 首先,我们要了解Spring和Quartz的基本概念。Spring是一个全面的Java企业级应用开发框架,它提供了依赖...

    spring-quartz定时任务小实例

    9. **监控与管理**:Quartz还提供了Web界面(如` quartz-admin`)或API来监控和管理任务。你可以查看任务状态、暂停或恢复任务,甚至修改调度策略。 10. **异常处理**:在Spring-Quartz中,如果Job执行过程中发生...

    spring-quartz-01

    在 "spring-quartz-01" 这个项目中,开发者已经集成 Spring 和 Quartz,创建了一个可以定时执行任务的示例。这通常涉及到以下几个关键知识点: 1. **Spring 集成 Quartz**:首先,我们需要在 Spring 的配置文件中...

    spring-quartz简单实例

    &lt;groupId&gt;org.quartz-scheduler &lt;artifactId&gt;quartz &lt;version&gt;2.x.x.RELEASE ``` 请替换`5.x.x.RELEASE`和`2.x.x.RELEASE`为实际的Spring和Quartz版本号。 接下来,我们需要配置Spring以使用Quartz。在Spring...

    spring-quartz.zip

    Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,而 Quartz 是一个强大的任务调度库。在这个名为 "spring-quartz.zip" 的压缩包中,我们看到它们被整合在一起,用于实现...

    spring-quartz-03

    本示例"spring-quartz-03"就是将Spring与Quartz相结合,实现定时任务的管理和执行。 **1. Spring与Quartz集成** Spring通过`org.springframework.scheduling.quartz`包提供了对Quartz的全面支持。在项目中引入...

    cs端的java-spring-quartz框架

    Java-Spring-Quartz框架是企业级应用开发中常见的组合,尤其在服务器端(CS,Client-Server)程序中,用于实现复杂的工作调度任务。Spring框架是Java领域的一个全能型框架,提供了依赖注入、面向切面编程、数据访问...

    Spring-quartz计划任务

    &lt;groupId&gt;org.quartz-scheduler &lt;artifactId&gt;quartz &lt;version&gt;2.3.2 &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-context-support &lt;version&gt;5.3.23 ``` 接下来,我们需要创建一个Job类来定义...

    spring-quartz

    【标题】"spring-quartz" 是一个将Spring框架与Quartz定时任务库集成的应用实践,旨在实现定时任务的动态管理。在企业级应用中,定时任务的管理是必不可少的,例如执行数据同步、报表生成、清理过期数据等。通过...

    Spring -Quartz的配置

    &lt;groupId&gt;org.quartz-scheduler &lt;artifactId&gt;quartz &lt;version&gt;2.3.2 &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-context-support &lt;version&gt;5.3.18 ``` 接下来,配置Spring的ApplicationContext,...

    spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序.zip

    spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...

    spring-boot-Quartz-1.zip

    implementation 'org.springframework.boot:spring-boot-starter-quartz' ``` 接下来,创建一个Quartz作业类(Job)并实现`org.quartz.Job`接口。这个类将定义实际要执行的任务。例如: ```java import org.quartz...

Global site tag (gtag.js) - Google Analytics