定时批处理作业是J2EE企业应用里很重要的一环,用来在晚间进行财务挂账,数据转存,数据处理分析等等操作。
而在Spring里,已经很好的集成了Quartz,简单到像配cron一样,在xml文件里面配一下时间就可以自动执行,不需要写一行代码。
Spring对Quartz大刀阔斧的简化堪称范例,下面我们来看下如何实现
在网上比较流行的一段配置:
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
default-autowire="no"default-lazy-init="false">
<beanid="someData"class="com.spring.job.JobData"/>
<beanid="jobDetailBean"
class="org.springframework.scheduling.quartz.JobDetailBean">
<propertyname="jobClass"
value="com.spring.job.DemoJob"/>
<propertyname="jobDataAsMap">
<map>
<entrykey="jobData"value-ref="someData"/>
</map>
</property>
</bean>
<beanid="jobDetailBean2"
class="org.springframework.scheduling.quartz.JobDetailBean">
<propertyname="jobClass"
value="com.spring.job.DemoJob2"/>
<propertyname="jobDataAsMap">
<map>
<entrykey="jobData"value-ref="someData"/>
</map>
</property>
</bean>
<beanid="simpleTriggerBean"
class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<propertyname="jobDetail"ref="jobDetailBean"/>
<propertyname="repeatInterval"value="500000"/>
<propertyname="startDelay"value="10000"/>
</bean>
<beanid="simpleTriggerBean2"
class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<propertyname="jobDetail"ref="jobDetailBean2"/>
<propertyname="repeatInterval"value="100000"/>
<propertyname="startDelay"value="10000"/>
</bean>
<beanid="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<propertyname="triggers">
<list>
<refbean="simpleTriggerBean"/>
<refbean="simpleTriggerBean2"/>
</list>
</property>
</bean>
</beans>
另外一个配置的例子,这个例子是有注释的:
1.<?xml version="1.0" encoding="UTF-8"?>
2.<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
3.<beans>
4.<!--起动Bean-->
5. <bean id="z" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
6. <property name="triggers">
7. <list>
8.
9. <ref bean="cronReportTrigger"/>
10. </list>
11. </property>
12. </bean>
13.<!--实际的工作Bean-->
14. <bean id="courseService" class="com.spring.helloworld.CourseService"></bean>
15.<!--jobBean用于设定启动时运用的Bean与方法-->
16. <bean id="scheduledReportJobDetail"
17.class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
18. <property name="targetObject">
19. <ref bean="courseService"/>
20. </property>
21. <property name="targetMethod">
22. <value>sendCourseEnrollmentReport</value>
23. </property>
24. </bean>
25.<!--定时器设定起动频率&启动时间我设的是每5秒起动一次 (0 0 4 * * ?每日四点起动....)-->
26. <bean id="cronReportTrigger"
27.class="org.springframework.scheduling.quartz.CronTriggerBean">
28. <property name="jobDetail"><ref bean="scheduledReportJobDetail"/>
29. </property>
30. <property name="cronExpression"><value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
31.</property>
32. </bean>
33.
34.</beans>
后面的这个配置就觉得很简单,直接在创建一个接口和实现类就可以了。甚至不必去创建,用原来的相信也应该可以的。
附:cronExpression配置说明
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
相关推荐
如果使用的是Spring Boot,可以在`application.properties`或`application.yml`中配置Quartz,并通过`@EnableScheduling`注解启用定时任务支持。 8. **动态管理定时任务** Spring提供的`SchedulerFactoryBean`...
在Spring中使用Quartz进行任务调度时,首先需要创建一个被调度的类。示例代码如下: ```java package com.kay.quartz; public class QuartzJob { public void work() { System.out.println("Quartz的任务调度!...
以下将详细介绍如何在Spring Boot应用中使用YAML文件配置Quartz定时任务,以及涉及的Spring Cloud Alibaba、Dubbo和Nacos的相关知识。 首先,我们需要在`pom.xml`中引入相关的依赖。Spring Boot的`spring-boot-...
3. **整合过程**:整合 Spring 2 和 Quartz 需要在 Spring 配置文件中声明 Job 和 Trigger 的 Bean,并指定它们的关联。Spring 可以通过其自身的 JobFactory 来创建 Job 实例,使得 Job 可以利用 Spring 的 DI 功能...
在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...
本文将详细介绍如何在Spring环境中使用注解方式配置Quartz。 1. **引入依赖** 在项目中,你需要引入Quartz和Spring的相应依赖。在Maven的pom.xml文件中,添加以下依赖: ```xml <groupId>org.quartz-scheduler...
本篇文章将探讨如何结合Spring的ApplicationContext和Quartz,实现在程序中动态唤醒和管理Quartz的Job。 首先,`AppService.java`很可能包含了一个服务类,该类可能负责与Quartz相关的业务逻辑,例如创建、更新或...
Spring对Quartz进行了集成,使其更易于在Spring应用程序中使用。Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理...
5. **配置Spring**:在Spring的配置文件中,我们需要声明`SchedulerFactoryBean`来初始化Quartz调度器,并定义`@Component`或`<bean>`来管理Job和Trigger。 ```xml <bean id="schedulerFactoryBean" class="org....
为此,我们可以利用Spring的`SchedulerAwareJobFactory`和`QuartzJobBean`,这样Spring的依赖注入和AOP特性就能在Job中发挥作用。 最后,lib文件夹通常包含项目所需的库文件,对于Quartz来说,它可能包含了Quartz库...
在IT行业中,Spring框架是Java应用开发中的基石,而Quartz则是广泛使用的任务调度库,尤其适用于企业级应用。本文将深入探讨如何在Spring环境中集成Quartz以实现集群配置,以便于在分布式环境中进行高效的任务调度。...
在上述配置中,`jobExecutionService`是自定义的Job执行类,它需要实现`org.quartz.Job`接口或者使用Spring的`MethodInvokingJobDetailFactoryBean`来调用特定方法。`CronTriggerFactoryBean`用于设置触发器的执行...
而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring应用中使用Quartz变得更加方便。 Quartz的核心概念包括Job(作业)、Trigger(触发器)和Calendar(日历)。Job是实际要执行的任务,Trigger定义了Job...
Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...
2. **配置Spring**:在Spring的配置文件(如applicationContext.xml)中,我们需要配置一个SchedulerFactoryBean,这是Spring管理Quartz Scheduler的主要方式。示例配置如下: ```xml ...
4. **Scheduler 配置**:在 Spring 配置中,可以使用 `@Configuration` 类来定义 `SchedulerFactoryBean`,并设置相关的属性。 5. **监听器**:Quartz 2.x 提供了更丰富的监听器功能,可以在 Spring 配置中添加 ...
配置Quartz通常需要在Spring配置文件中声明`SchedulerFactoryBean`,并设置相关的bean。例如: ```xml <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 这里...
在Spring应用中集成Quartz,首先需要在`applicationContext.xml`或对应的配置文件中声明Quartz的相关bean。这包括SchedulerFactoryBean,它负责创建和管理Scheduler实例,以及JobDetail和Trigger的定义。 ```xml ...
通过以上步骤,你就可以在Spring MVC项目中使用Spring内置的定时器或Quartz来执行定时任务了。两者各有优劣,Spring内置定时器简单易用,适合轻量级的定时需求;而Quartz功能强大,适用于复杂的定时场景,但配置和...
要在Spring 3中使用Quartz,首先需要在项目中添加Quartz库的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.quartz-scheduler <artifactId>quartz <version>2.3.2 ``` ...