`
hacker_zxf
  • 浏览: 147628 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring quartz配置定时器

阅读更多
首先建立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>

但是第二种方式的,没办法设置这个属性,暂时还不知道怎么去设置这个属性。
分享到:
评论
2 楼 helong0904 2011-08-12  
1 楼 lingqi1818 2008-12-31  
public class MethodInvokingJobDetailFactoryBean extends ArgumentConvertingMethodInvoker
    implements FactoryBean, BeanNameAware, BeanClassLoaderAware, BeanFactoryAware, InitializingBean


只是一个factoryBean增加了AOP功能。

相关推荐

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...

    Spring Quartz 定时器示例(Web工程版)

    Spring Quartz 定时器示例(Web工程版),欢迎下载。

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...

    Spring-quartz实现定时器(含代码)

    本文将深入探讨如何使用Spring整合Quartz来实现定时器,并提供相关代码示例。 首先,理解Spring框架。Spring是一个开源的Java平台,它提供了全面的企业级应用程序开发解决方案,包括依赖注入(DI)、面向切面编程...

    spring和quartz的定时器的启动和停止例子

    4. **启动和停止定时器**:在Spring应用启动时,由于配置了`autoStartup="true"`,Quartz定时器会自动启动。若需手动控制,可以使用ApplicationContext获取Scheduler实例并调用其`start()`或`standby()`方法来启动或...

    Spring Quartz定时器

    Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器

    spring quartz 表达式在线生成器

    通常,这样的示例会包含Spring配置文件(如`applicationContext.xml`或`application.yml`)、Java配置类、定时任务类(实现`org.quartz.Job`接口)以及触发器配置(使用`org.quartz.Trigger`)。 总的来说,了解和...

    Spring Quartz定时器的jar包

    Spring Quartz定时器是Java开发中常用的一个任务调度框架,它结合了Spring框架的强大功能与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务。在这个压缩包中,包含了三个核心的jar文件:`quartz-all-...

    使用spring的quartz定时器要用到的jar包

    首先,要使用Spring的Quartz定时器,你需要确保引入了以下核心的jar包: 1. `quartz.jar`:这是Quartz的核心库,包含了Quartz的调度器、作业、触发器等核心组件。 2. `spring-context-support.jar`:Spring框架提供...

    spring+quartz定时器

    让我们深入探讨一下这个"spring2.0+quartz1.6定时器"的工作原理和实现细节。 首先,Spring框架是一个广泛应用的开源Java框架,它提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...

    spring quartz定时器的简单配置和使用

    本文将详细介绍如何在Spring项目中集成Quartz定时器,并通过一个简单的示例来进行演示。 #### 一、环境准备 为了能够顺利地运行示例代码,我们需要准备以下必要的依赖库: - `jta-1.1.jar`:用于事务管理。 - `...

    idea 使用spring自带的定时器quartz 使用的c3p0 v0.95.2所包含的jar

    接下来,为了使用`Quartz`,你需要引入`quartz-spring`库,并配置`Scheduler`: ```xml &lt;bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;!-- 其他配置...

    配置Spring+quartz定时器.docx

    ### 配置Spring+Quartz定时器的知识点详解 #### 一、Quartz简介与应用场景 Quartz 是一个开源的任务调度框架,它提供了强大的任务调度功能,并且易于配置和使用。该框架支持复杂的循环调度策略,可以触发任务的...

    spring之quartz定时器

    《Spring与Quartz定时器深度解析》 在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇。其中,Spring对任务调度的支持是其一大亮点,尤其与Quartz的集成,使得开发者能够方便地实现定时任务。Quartz是一...

    Spring定时器实例(Java的Timer类和OpenSymphony的Quartz)

    Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。

    简单实现Spring Quartz定时器

    现在,当Spring启动时,Quartz定时器也会随之启动,并根据配置的Trigger执行Job。在Job中,你可以注入Spring的依赖,实现业务逻辑。例如: ```java @Override protected void executeInternal(JobExecutionContext ...

    Spring Quartz 定时器示例(Java工程版)

    - Spring通过提供`org.springframework.scheduling.quartz`包来简化Quartz的配置和管理。通过Spring,我们可以利用IoC(控制反转)和AOP(面向切面编程)的优势,使任务调度更加灵活和可维护。 3. **Spring配置...

    Spring与QuartZ集成定时器

    【Spring与QuartZ集成定时器】是一种在Java应用程序中实现定时任务的常见方式,它结合了Spring框架的灵活性和Quartz的定时功能。Quartz是一个开源的作业调度框架,可以用于创建、调度和执行重复性的任务。Spring则...

    SpringQuartz定时器的配置[归类].pdf

    Spring Quartz 是一个集成Quartz定时任务框架的Spring模块,它为开发者提供了在Spring环境中便捷配置和管理定时任务的能力。Quartz作为一个强大且功能丰富的任务调度框架,能够灵活地定义任务的执行时间表,并且可以...

    SpringQuartz定时器的配置[参照].pdf

    然后,配置Spring的XML文件来设置定时器。在配置中,你需要定义`JobDetailBean`来指定任务类,并通过`CronTriggerBean`来设定调度规则。例如: ```xml &lt;bean name="userTimelineQuartz" class="org.springframework...

Global site tag (gtag.js) - Google Analytics