首先建立bean.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--起动Bean-->
<bean id="test"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronReportTrigger" />
</list>
</property>
</bean>
<!--实际的工作Bean-->
<bean id="testjobbean"
class="com.zhouxf.quartz.TestJobBean">
</bean>
<!--jobBean用于设定启动时运用的Bean与方法-->
<bean id="scheduledReportJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="testjobbean" />
</property>
<property name="targetMethod">
<value>run</value>
</property>
</bean>
<!--定时器设定(0/2 43 12-17 * * ?在12-17点43分,每隔2秒运行一次)-->
<bean id="cronReportTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="scheduledReportJobDetail" />
</property>
<property name="cronExpression">
<value>0/2 43 12-17 * * ?</value>
</property>
</bean>
</beans>
JOB代码:
public class TestJobBean{
public void run() {
System.out.println("run..................");
}
}
测试代码:
public static void main(String[] args) throws BeansException, FileNotFoundException, InterruptedException {
// new LogInit("WEB-INF/classes/com/spring/helloworld/log4j.properties");
BeanFactory factory = new XmlBeanFactory(
new FileSystemResource(
"///home/zhouxf/work/WebPro/WebContent/WEB-INF/bean.xml"));
factory.getBean("test");
}
还有另一种配置方式,使用QuartzJobBean,它是JobDetailBean的子类,代码如下:
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class TestJobBean extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("TestJobBean..run................");
}
}
配置文件中加入:
<bean id="reportJob"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.zhouxf.quartz.TestJobBean</value>
</property>
</bean>
<!--定时器设定(0/2 43 12-17 * * ?在12-17点43分,每隔2秒运行一次)-->
<bean id="cronReportTrigger2"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="reportJob" />
</property>
<property name="cronExpression">
<value>0/1 31 12-17 * * ?</value>
</property>
</bean>
测试代码改为:
public static void main(String[] args) throws BeansException, FileNotFoundException, InterruptedException {
// new LogInit("WEB-INF/classes/com/spring/helloworld/log4j.properties");
BeanFactory factory = new XmlBeanFactory(
new FileSystemResource(
"///home/zhouxf/work/WebPro/WebContent/WEB-INF/bean.xml"));
factory.getBean("test");
factory.getBean("test2
}
默认情况下,Quartz Jobs是无状态的,可能导致jobs之间互相的影响。如果你为相同的JobDetail指定两个Trigger, 很可能当第一个job完成之前,第二个job就开始了。如果JobDetail对象实现了Stateful接口,就不会发生这样的事情。 第二个job将不会在第一个job完成之前开始。为了使得jobs不并发运行,设置MethodInvokingJobDetailFactoryBean中的concurrent标记为false。
<bean id="scheduledReportJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="simpleJob" />
</property>
<property name="targetMethod">
<value>run</value>
</property>
<property name="concurrent" value="false" />
</bean>
但是第二种方式的,没办法设置这个属性,暂时还不知道怎么去设置这个属性。
分享到:
相关推荐
Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...
Spring Quartz 定时器示例(Web工程版),欢迎下载。
本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...
本文将深入探讨如何使用Spring整合Quartz来实现定时器,并提供相关代码示例。 首先,理解Spring框架。Spring是一个开源的Java平台,它提供了全面的企业级应用程序开发解决方案,包括依赖注入(DI)、面向切面编程...
4. **启动和停止定时器**:在Spring应用启动时,由于配置了`autoStartup="true"`,Quartz定时器会自动启动。若需手动控制,可以使用ApplicationContext获取Scheduler实例并调用其`start()`或`standby()`方法来启动或...
Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器
通常,这样的示例会包含Spring配置文件(如`applicationContext.xml`或`application.yml`)、Java配置类、定时任务类(实现`org.quartz.Job`接口)以及触发器配置(使用`org.quartz.Trigger`)。 总的来说,了解和...
Spring Quartz定时器是Java开发中常用的一个任务调度框架,它结合了Spring框架的强大功能与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务。在这个压缩包中,包含了三个核心的jar文件:`quartz-all-...
首先,要使用Spring的Quartz定时器,你需要确保引入了以下核心的jar包: 1. `quartz.jar`:这是Quartz的核心库,包含了Quartz的调度器、作业、触发器等核心组件。 2. `spring-context-support.jar`:Spring框架提供...
让我们深入探讨一下这个"spring2.0+quartz1.6定时器"的工作原理和实现细节。 首先,Spring框架是一个广泛应用的开源Java框架,它提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...
本文将详细介绍如何在Spring项目中集成Quartz定时器,并通过一个简单的示例来进行演示。 #### 一、环境准备 为了能够顺利地运行示例代码,我们需要准备以下必要的依赖库: - `jta-1.1.jar`:用于事务管理。 - `...
### 配置Spring+Quartz定时器的知识点详解 #### 一、Quartz简介与应用场景 Quartz 是一个开源的任务调度框架,它提供了强大的任务调度功能,并且易于配置和使用。该框架支持复杂的循环调度策略,可以触发任务的...
《Spring与Quartz定时器深度解析》 在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇。其中,Spring对任务调度的支持是其一大亮点,尤其与Quartz的集成,使得开发者能够方便地实现定时任务。Quartz是一...
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。
接下来,为了使用`Quartz`,你需要引入`quartz-spring`库,并配置`Scheduler`: ```xml <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 其他配置...
现在,当Spring启动时,Quartz定时器也会随之启动,并根据配置的Trigger执行Job。在Job中,你可以注入Spring的依赖,实现业务逻辑。例如: ```java @Override protected void executeInternal(JobExecutionContext ...
- Spring通过提供`org.springframework.scheduling.quartz`包来简化Quartz的配置和管理。通过Spring,我们可以利用IoC(控制反转)和AOP(面向切面编程)的优势,使任务调度更加灵活和可维护。 3. **Spring配置...
【Spring与QuartZ集成定时器】是一种在Java应用程序中实现定时任务的常见方式,它结合了Spring框架的灵活性和Quartz的定时功能。Quartz是一个开源的作业调度框架,可以用于创建、调度和执行重复性的任务。Spring则...
Spring Quartz 是一个集成Quartz定时任务框架的Spring模块,它为开发者提供了在Spring环境中便捷配置和管理定时任务的能力。Quartz作为一个强大且功能丰富的任务调度框架,能够灵活地定义任务的执行时间表,并且可以...
然后,配置Spring的XML文件来设置定时器。在配置中,你需要定义`JobDetailBean`来指定任务类,并通过`CronTriggerBean`来设定调度规则。例如: ```xml <bean name="userTimelineQuartz" class="org.springframework...