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
相关推荐
Quartz和Spring-Quartz是两个在Java世界...“spring-quartz-demo”可能是一个完整的示例项目,你可以通过运行它来深入理解Quartz在Spring中的应用。通过研究这些资源,你可以更全面地掌握Quartz和Spring-Quartz的用法。
本项目来源与网络,本人对项目...直接通过mvn 倒入项目,在Spring-quartz-demo\src\main\webapp\sql 有sql 建立数据库,表 启动tomcat 直接访问http://localhost:8080/Spring-quartz-demo/task/taskList.htm 就可以使用
spring-quartz的标准配置文件
<groupId>org.quartz-scheduler <artifactId>quartz <groupId>org.springframework <artifactId>spring-context-support ``` 2. 配置 Quartz:在 Spring 的配置文件(如 `application.properties` 或 `...
在"spring-quartz-example"项目中,我们首先会看到Spring配置文件(如`applicationContext.xml`),这里会配置Spring的JobDetail和Trigger,这是Quartz的核心组件。JobDetail定义了任务的业务逻辑,而Trigger则决定...
这个名为"spring-quartz-021"的项目显然演示了如何将这两者集成在一起,以实现基于corn表达式的任务调度。 首先,让我们深入了解Spring和Quartz的基础知识。Spring框架提供了一个全面的编程和配置模型,用于构建...
在 "spring-quartz-02" 这个项目中,我们可以看到如何将 Spring 框架与 Quartz 整合,以实现定时任务的功能。这个 demo 的核心目标是展示如何配置和使用 Spring 对 Quartz 的支持,通过 Cron 表达式来定义任务的执行...
这个"spring-quartz-demo"项目就是一个很好的示例,它展示了如何在Spring中整合Quartz以实现动态定时任务。 首先,我们要了解Spring和Quartz的基本概念。Spring是一个全面的Java企业级应用开发框架,它提供了依赖...
9. **监控与管理**:Quartz还提供了Web界面(如` quartz-admin`)或API来监控和管理任务。你可以查看任务状态、暂停或恢复任务,甚至修改调度策略。 10. **异常处理**:在Spring-Quartz中,如果Job执行过程中发生...
在 "spring-quartz-01" 这个项目中,开发者已经集成 Spring 和 Quartz,创建了一个可以定时执行任务的示例。这通常涉及到以下几个关键知识点: 1. **Spring 集成 Quartz**:首先,我们需要在 Spring 的配置文件中...
<groupId>org.quartz-scheduler <artifactId>quartz <version>2.x.x.RELEASE ``` 请替换`5.x.x.RELEASE`和`2.x.x.RELEASE`为实际的Spring和Quartz版本号。 接下来,我们需要配置Spring以使用Quartz。在Spring...
Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,而 Quartz 是一个强大的任务调度库。在这个名为 "spring-quartz.zip" 的压缩包中,我们看到它们被整合在一起,用于实现...
本示例"spring-quartz-03"就是将Spring与Quartz相结合,实现定时任务的管理和执行。 **1. Spring与Quartz集成** Spring通过`org.springframework.scheduling.quartz`包提供了对Quartz的全面支持。在项目中引入...
Java-Spring-Quartz框架是企业级应用开发中常见的组合,尤其在服务器端(CS,Client-Server)程序中,用于实现复杂的工作调度任务。Spring框架是Java领域的一个全能型框架,提供了依赖注入、面向切面编程、数据访问...
<groupId>org.quartz-scheduler <artifactId>quartz <version>2.3.2 <groupId>org.springframework <artifactId>spring-context-support <version>5.3.23 ``` 接下来,我们需要创建一个Job类来定义...
【标题】"spring-quartz" 是一个将Spring框架与Quartz定时任务库集成的应用实践,旨在实现定时任务的动态管理。在企业级应用中,定时任务的管理是必不可少的,例如执行数据同步、报表生成、清理过期数据等。通过...
<groupId>org.quartz-scheduler <artifactId>quartz <version>2.3.2 <groupId>org.springframework <artifactId>spring-context-support <version>5.3.18 ``` 接下来,配置Spring的ApplicationContext,...
spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...
implementation 'org.springframework.boot:spring-boot-starter-quartz' ``` 接下来,创建一个Quartz作业类(Job)并实现`org.quartz.Job`接口。这个类将定义实际要执行的任务。例如: ```java import org.quartz...