总共有两个重点:
1:JobDetailFactoryBean:即需要调度的job描述,一般用MethodInvokingJobDetailFactoryBean和JobDetailFactoryBean比较多。
2:触发器:用来调度任务的,其参数是调度job的JobDetailFactoryBean。
其中配置如下:
<!--<bean id="firstJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="myBean" /> <property name="targetMethod" value="printMessage" /> </bean> --> <bean name="firstJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.liu.jobs.FirstScheduledJob" /> <property name="jobDataMap"> <map> <entry key="paramBean" value-ref="paramBean" /> <!-- 可增加参数,在job里增加setParamBean方法即可 --> </map> </property> <property name="durability" value="true" /> </bean> <bean id="firstTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="firstJobDetail" /> <!--<property name="cronExpression" value="0/5 * * ? * SAT-SUN" />--> <property name="cronExpression" value="0/5 * * ? * *" /> </bean>
所以,配置了上面两个重点,再将调度器放入调度工厂中就行了:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="firstTrigger" /> </list> </property> </bean>
附(cronExpression表达式):
秒 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触发 "0 0 6 * * ?" 每天早上6点 "0 0 */2 * * ?" 每两个小时 "0 0 23-7/2,8 * * ?" 晚上11点到早上8点之间每两个小时,早上八点 "0 0 11 ? * 1-3" 每个礼拜的礼拜一到礼拜三的早上11点 "0 0 4 1 1 ?" 1月1日早上4点
1、“*”字符被用来指定所有的值。如:"*"在分钟的字段域里表示“每分钟”。
2、“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。
3、月份中的日期和星期中的日期这两个元素是互斥的,一起用时,应该通过设置一个问号来表明不想设置那个字段。
4、“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
5、“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。
6、“/”字符用于指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。“5/15”在分钟域表示每小时的5,20,35和50。符号“*”在“/”前面(如:*/10)等价于0在“/”前面(如:0/10)。记住一条本质:表达式的每个数值域都是一个有最大值和最小值的集合,如:秒域和分钟域的集合是0-59,日期域是1-31,月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如:“7/6”在月份域的时候只有当7月的时候才会触发,并不是表示每个6月。
7、L是‘last’的省略写法可以表示day-of-month和day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字,它表示一个月的最后几天,例如‘6L’就表示一个月的最后一个星期五(注意:这里的6可能是根据1是星期日来计算的)。
8、字符“W”只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。如果15好是周日,则任务会在周一也就是16号触发。如果是在日期域填写“1W”即使1号是周六,那么任务也只会在下周一,也就是3号触发,“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个单独的数值使用,不能够是一个数字段,如:1-15W是错误的。
9、“L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日。
字符“#”只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。
10、字符“C”允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。如:日期域是“5C”表示关联“日历”中第一天,或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。
相关推荐
本文将深入探讨如何在Spring项目中集成Quartz,并详细解析Cron表达式,以便更好地理解和运用定时任务。 首先,集成Quartz到Spring项目中通常涉及以下步骤: 1. **引入依赖**:在项目的pom.xml或build.gradle文件中...
### Spring集成Quartz定时任务框架介绍 #### 一、引言 在现代JavaEE应用程序开发过程中,定时任务是一项常见的需求。这些任务可能包括但不限于:每天固定时间生成报表、定期清理缓存、定时发送邮件提醒等。传统的...
同时,由于其通用性,cron表达式也被其他许多系统和语言所采用,如Linux的crontab或Spring Framework中的定时任务。 总之,quartz定时任务的cron表达式是调度任务的核心元素,它提供了一种强大的方式来定义任务的...
-- 调用频率设置 每天上午2点和下午5点 cron表达式 --> <bean id="runTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <value>0 0 2,17 * * ? <!-- 最终启动的配置...
总的来说,Quartz结合cron表达式提供了一种强大的工具,使得开发者能够灵活地在Java应用中安排复杂的定时任务。通过阅读博文、理解配置文件和文档,你可以深入学习Quartz的工作原理,提升在分布式系统中的任务调度...
Spring框架则通过`@Scheduled(cron = "cron表达式")`,将方法标记为定时任务,根据给定的cron表达式自动执行。 使用这个“定时任务cron表达式生成”工具,用户可以直观地设置任务的执行频率,而无需手动编写复杂的...
在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...
Java中的Cron表达式解析通常是通过Spring框架的`org.springframework.scheduling.support.CronSequenceGenerator`类或者第三方库如Quartz的`org.quartz.CronExpression`来实现。 首先,让我们理解Cron表达式的格式...
Cron表达式介绍** Cron表达式是Unix/Linux系统中的定时任务调度器Cron的一个组成部分,它由六个或七个由空格分隔的字段组成,每个字段代表不同的时间单位(秒、分钟、小时、日期、月份、星期、年份)。通过这些字段...
Cron表达式是Unix/Linux系统中的定时任务调度器Cron所使用的语法,也被广泛应用于Java世界,例如Quartz、Spring等框架。它允许用户以字符串的形式定义任务的执行时间,如分钟、小时、日期等。这个压缩包文件包含了对...
cron表达式是Unix/Linux系统中用于定时任务调度的一种机制,而在Java中,通过Quartz、Spring框架等库,也可以使用cron表达式来实现定时任务。本项目提供的"Cron表达式生成器java版"是一个基于Java 1.8的工具,能够...
Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...
"Cron表达式"是Linux系统中计划任务的核心,而Java社区通过`@Scheduled`注解和Quartz库等方式也引入了类似的概念,使得在Java应用中实现定时任务变得非常方便。 "Cron"这个词来源于北欧神话中的时间之神"Cronus",...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用中定义和执行定时任务。本实例将探讨如何在Spring框架中集成Quartz,创建并运行一个简单的定时任务。以下是你需要知道的关键知识点: 1. **Quartz...
Quartz 的 cron 表达式是一个强大的调度工具,用于设置定时任务的执行时间。它由七个字段组成,分别是秒、分钟、小时、天(月)、月、天(星期)和年份。每个字段可以设置特定的值、范围、列表、通配符等。 秒(0-...
Spring框架通过Spring JobSupport类集成了Quartz,使得在Spring应用中配置和管理定时任务变得更加便捷。 Spring Quartz的表达式通常基于Cron表达式,这是一种特殊的时间格式,用于定义任务的执行周期。例如,“0 0 ...
5. `org.quartz.CronExpression`:Quartz定时任务库提供的cron表达式验证类。 6. `org.springframework.util.Assert`:Spring Framework提供的断言工具类。 `CronExpParserUtil`的核心方法是`translateToChinese`,...
Quartz Cron表达式是Java定时任务库Quartz的重要组成部分,用于定义定时任务的执行规则。Cron表达式是一种字符串格式,由七个子表达式组成,分别代表秒、分、小时、日、月、周和年,允许指定一个精确的时间调度。...
本文将详细介绍如何在Spring 3中配置Quartz来实现定时任务。 首先,理解定时任务的基本概念。定时任务是在指定时间点或按照一定规律自动执行的任务,这在业务系统中非常常见,例如数据清理、报表生成等。Quartz提供...
在Spring中整合Quartz,我们可以利用Spring的管理能力,如bean的生命周期管理和事务管理,来更方便地创建和管理定时任务。 **Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态...