Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:
首先我们来写一个被调度的类:
package com.kay.quartz;
public class QuartzJob
{
public void work()
{
System.out.println("Quartz的任务调度!!!");
}
}
Spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 要调用的工作类 -->
<bean id="quartzJob" class="com.kay.quartz.QuartzJob"></bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="quartzJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>work</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobtask"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime"/>
</list>
</property>
</bean>
</beans>
测试程序:
package com.kay.quartz;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainTest
{
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("Test start.");
ApplicationContext context = new ClassPathXmlApplicationContext("quartz-config.xml");
//如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
//context.getBean("startQuertz");
System.out.print("Test end..");
}
}
我们需要把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 *
更多知识:
http://www.ibm.com/developerworks/cn/java/j-quartz/index.html
http://www.javaeye.com/topic/117244
分享到:
相关推荐
SpringMVC 和 Quartz 是两个在Java开发中广泛使用的框架,它们各自在不同的领域发挥着重要作用。SpringMVC 是一个用于构建 Web 应用程序的轻量级、模型-视图-控制器(MVC)框架,而 Quartz 是一个开源的任务调度库,...
这个项目结合了四个关键的技术组件,它们分别是Mybatis、Spring、SpringMVC和Quartz,下面将详细介绍这些技术以及它们在多数据源切换和跨数据库同步中的应用。 **Mybatis** 是一款轻量级的Java持久层框架,它允许...
SpringMVC是一个强大的Java web开发框架... 首先,需要在Spring配置文件中引入Quartz的相关bean,如`SchedulerFactoryBean`,并配置相关的数据源和配置文件。这将使Spring能够初始化和管理Quartz的Scheduler。 ```xml ...
ssm-springMVC-整合Quartz(解决了无法注入service问题).doc
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+mybatis+quartz动态定时任务创建"就是一个常见的技术栈,用于实现这样的目标。这个组合充分利用了各组件的优势,提供了强大的后端服务支持...
1. **引入依赖**:首先,你需要在项目中引入Quartz相关的jar包,如`quartz.jar`。如果使用Maven或Gradle,可以在pom.xml或build.gradle中添加对应的依赖项。 2. **配置Scheduler**:在Spring的配置文件中,创建一个...
下面我们将详细探讨如何在Spring MVC项目中配置和使用Quartz定时器: 1. **引入依赖**: 首先,在你的`pom.xml`或`build.gradle`文件中添加Quartz的依赖。对于Maven,你可以添加如下依赖: ```xml <groupId>...
quartz: 1.页面配置Trigger以及选择Job任务来开启定时器。 2.记录job执行历史以及异常。 3.记录schedule操作历史以及异常。 分享给大家,欢迎提出批评和建议。 有些注释没有加上,有任何问题都可以email: ...
在提供的压缩包中,`ssm-springMVC-整合Quartz(解决了无法注入service问题).doc`可能包含了一份详细的文档,详述了上述步骤以及具体的配置代码。而`sx-ssm-quartz`可能是一个源码示例,展示了如何在实际项目中应用...
在Java Web开发中,Spring MVC和Quartz库经常被用来构建灵活的任务调度系统。Quartz是一个强大的、开放源码的作业调度框架,可以用于创建、调度和执行重复任务。而Spring MVC是Spring框架的一部分,用于处理HTTP请求...
通过以上步骤,你就可以在Spring MVC项目中使用Spring内置的定时器或Quartz来执行定时任务了。两者各有优劣,Spring内置定时器简单易用,适合轻量级的定时需求;而Quartz功能强大,适用于复杂的定时场景,但配置和...
1、首先配置setenv.bat set JAVA_HOME=E:\tools\JDK7-64\JDK set GROOVY_HOME=E:\tools\groovy-2.1.9 set GRADLE_HOME=E:\tools\gradle-2.2.1 set ECLIPSE_HOME=E:\tools\ECLIPSE-JEE-64BIT ...
1. **添加依赖**:在 Maven 或 Gradle 项目中,你需要添加 Spring MVC 相关的依赖库,例如 spring-webmvc。 2. **配置 DispatcherServlet**:这是 Spring MVC 的前端控制器,它负责分发请求到相应的处理器。在 `web....
Spring MVC、MyBatis 和 Quartz 是企业级应用开发中常用的三个技术组件,它们分别负责不同的功能领域。Spring MVC 是一个轻量级的基于模型-视图-控制器(MVC)设计模式的Web 应用框架,它使得Java开发者能够轻松地...
1. 添加依赖:在项目中引入Spring、Spring MVC和Quartz的相关依赖。在Maven的pom.xml文件中添加对应的dependency。 2. 配置Spring:在Spring的配置文件中,定义SchedulerFactoryBean,以初始化Quartz的Scheduler...
1. 添加依赖:确保项目中引入了Spring和Quartz的相关库,包括`spring-context-support`和`quartz`。 2. 配置Scheduler:在Spring的配置文件中,使用`SchedulerFactoryBean`来初始化和配置Quartz Scheduler。可以...
Quartz是Java领域广泛使用的定时任务库,它支持复杂的调度策略,如周期性执行、一次性任务等。在这个系统中,Quartz作为核心的定时任务引擎,允许管理员动态创建、编辑、删除和修改定时任务。所有的任务配置信息,...
在Spring MVC中集成Quartz定时任务是一个常见的需求,特别是在企业级应用中,用于实现周期性的后台任务,如数据同步、报表生成等。本教程将详细讲解如何在Spring MVC项目中配置Quartz,以实现每分钟第3秒执行的任务...
1. **配置Quartz**:首先,在Spring配置文件中,我们需要声明一个`SchedulerFactoryBean`,这是Spring对Quartz的包装,用于启动和管理Quartz调度器。同时,我们需要配置数据源,因为Quartz可以将任务和触发器存储在...
本人搭建的ssm框架的maven web项目,用maven管理项目的jar包,项目架构搭好,用的都是现阶段最新的jar包,整合了log4j日志,redis缓存,quartz定时任务,全局配置文件在代码中使用等,controller层/service层/bo层/dao层都...