项目中遇到了使用定时工作的程序,数目还很多,于是由于spring的方便性,使用spring-quartz!
使用之前,需要在项目中引入quartz的jar包,要注意quartz和spring版本的匹配,我使用的是quartz1.6.2,spring是2.0.7。
1. spring中涉及quartz的配置:
<!-- 配置quartz调度,指定加载哪些触发器-->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="sendEvaDataTrigger" />
</list>
</property>
</bean>
<!-- 配置quartz的触发器,指定该触发器触发的条件,以及该触发器加载哪些job-->
<bean id="sendEvaDataTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="sendEvaDataJobDetail" />
</property>
<!-- 59秒 59分 23时 每天 每月 不指定星期 -->
<property name="cronExpression" value="59 59 23 * * ?" />
</bean>
<!-- 配置quartz的任务,指定该任务执行哪一个bean的哪一个方法-->
<bean id="sendEvaDataJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="sendEvaDataJob" />
<property name="targetMethod" value="sendEvaDataEveryDay" />
</bean>
<!-- 配置需要定时执行的spring bean-->
<bean id="sendEvaDataJob" class="com.euvnet.ccc.common.SendEvaDataJobImpl">
<property name="agentEvaluateManage" ref="agentEvaluateManage"></property>
<property name="orgRemoteConfig" ref="orgRemoteConfig"></property>
</bean>
在配置时,考虑到quartz的特殊性,可以将这些配置单独放在一个配置文件中,这样在以后修改比较方便。
2. 注意事项
quartz有两种方式记录需要管理调度的job,一种是内存方式,一种是数据库方式,如果spring中配置的数据源id为“dataSource”并且bean加载方式为自动装载,spring加载quartz时,会强制将quartz置为数据库方式。解决方法一个是修改数据源id的名称,另外一个是关闭spring对bean的加载方式(因此把quartz相关的配置写在一个配置文件中还是比较方便些)。
3. 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 表示指定月的第三个星期五;
分享到:
相关推荐
Quartz和Spring-Quartz是两个在Java世界...“spring-quartz-demo”可能是一个完整的示例项目,你可以通过运行它来深入理解Quartz在Spring中的应用。通过研究这些资源,你可以更全面地掌握Quartz和Spring-Quartz的用法。
spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...
本项目来源与网络,本人对项目...直接通过mvn 倒入项目,在Spring-quartz-demo\src\main\webapp\sql 有sql 建立数据库,表 启动tomcat 直接访问http://localhost:8080/Spring-quartz-demo/task/taskList.htm 就可以使用
implementation 'org.springframework.boot:spring-boot-starter-quartz' ``` 接下来,创建一个Quartz作业类(Job)并实现`org.quartz.Job`接口。这个类将定义实际要执行的任务。例如: ```java import org.quartz...
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-02" 这个 demo 提供了一个完整的示例,演示了如何在 Spring 环境下利用 Quartz 创建并管理定时任务,使用 Cron 表达式进行灵活的调度。这对于任何需要在 Java 应用中实现定时功能的开发者...
Quartz Scheduler的Spring-Boot自动配置只是Quartz Scheduler的Spring-Boot启动器。 当然,Quartz Scheduler已经有好几个启动器,但是它们都不能满足我的所有需求,因此我创建了自己的启动器。 这只是一个业余项目。...
这个名为"spring-quartz-021"的项目显然演示了如何将这两者集成在一起,以实现基于corn表达式的任务调度。 首先,让我们深入了解Spring和Quartz的基础知识。Spring框架提供了一个全面的编程和配置模型,用于构建...
9. **监控与管理**:Quartz还提供了Web界面(如` quartz-admin`)或API来监控和管理任务。你可以查看任务状态、暂停或恢复任务,甚至修改调度策略。 10. **异常处理**:在Spring-Quartz中,如果Job执行过程中发生...
这个"spring-quartz-demo"项目就是一个很好的示例,它展示了如何在Spring中整合Quartz以实现动态定时任务。 首先,我们要了解Spring和Quartz的基本概念。Spring是一个全面的Java企业级应用开发框架,它提供了依赖...
Spring Boot 是一个流行的 Java 框架,用于简化Spring应用程序的初始设置和配置。...通过上述步骤,你已经掌握了在Spring Boot应用中集成和使用Quartz的基本知识,可以开始创建和管理自己的定时任务了。
<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-01" 这个项目中,开发者已经集成 Spring 和 Quartz,创建了一个可以定时执行任务的示例。这通常涉及到以下几个关键知识点: 1. **Spring 集成 Quartz**:首先,我们需要在 Spring 的配置文件中...
标题中的"spring-context-support-4.2.2和quartz-2.2.3所需Jar包"涉及到两个关键的Java库:Spring Context Support 4.2.2版本和Quartz Scheduler 2.2.3版本。这两个库在企业级Java应用开发中扮演着重要角色,特别是...
Spring 与 Quartz 结合使用时,Spring 可以帮助管理和配置 Quartz,使得任务调度更易于集成到应用程序中。在 Spring 配置中,我们可以声明 Quartz 的 Job 和 Trigger,Job 是要执行的任务,Trigger 决定何时启动这个...
本示例"spring-quartz-03"就是将Spring与Quartz相结合,实现定时任务的管理和执行。 **1. Spring与Quartz集成** Spring通过`org.springframework.scheduling.quartz`包提供了对Quartz的全面支持。在项目中引入...
java运行依赖jar包
赠送jar包:spring-context-support-5.3.15.jar; 赠送原API文档:spring-context-support-5.3.15-javadoc.jar; 赠送源代码:spring-context-support-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-context-...