`
itwangxinli
  • 浏览: 147910 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring Quartz 的使用

阅读更多

最近忙于项目,一直没有更新blog,请大家见谅。
在项目中使用了Lucene全文检索,考虑到系统的特性,把Lucene的全文检索索引创建时间放在夜晚,已减轻系统的压力。
首先,需要写一个类,这个类是用来执行具体的操作。也就是你想做什么事情,这个类需要extends org.springframework.scheduling.quartz.QuartzJobBean 类。
比如:

package com.finegold.digimus.service.config;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

import com.finegold.digimus.comm.StringHelper;

import com.finegold.digimus.lucene.index.service.imp.AddCatalogArticleDataDocument;
import com.finegold.digimus.lucene.index.service.imp.AddMediaContentDocument;
import com.finegold.digimus.lucene.index.service.imp.IndexFactory;
import com.finegold.digimus.service.CatalogArticleDataService;
import com.finegold.digimus.service.MediaContentService;
import com.finegold.digimus.service.bean.IndexPath;

/**
 * @author 汪心利 2007-9-6 下午03:41:29
 * @copyRigth FineGold 2007
 * @Describle 定时创建Lucene索引任务的定时器
 */

public class IndexQuartz extends QuartzJobBean {

 private Logger logger = Logger.getLogger(IndexQuartz.class);

 private MediaContentService mediaContent;

 private CatalogArticleDataService catalogArticleData;

 private IndexPath indexPath;

 /**
  * @return the indexPath
  */
 public IndexPath getIndexPath() {
  return indexPath;
 }

 /**
  * @param indexPath
  *            the indexPath to set
  */
 public void setIndexPath(IndexPath indexPath) {
  this.indexPath = indexPath;
 }

 /**
  * @return the catalogArticleData
  */
 public CatalogArticleDataService getCatalogArticleData() {
  return catalogArticleData;
 }

 /**
  * @param catalogArticleData
  *            the catalogArticleData to set
  */
 public void setCatalogArticleData(
   CatalogArticleDataService catalogArticleData) {
  this.catalogArticleData = catalogArticleData;
 }

 /**
  * @return the mediaContent
  */
 public MediaContentService getMediaContent() {
  return mediaContent;
 }

 /**
  * @param mediaContent
  *            the mediaContent to set
  */
 public void setMediaContent(MediaContentService mediaContent) {
  this.mediaContent = mediaContent;
 }

 @Override
 protected void executeInternal(JobExecutionContext arg0)
   throws JobExecutionException {

//在这里加入你的操作
  StringBuffer logInfo = new StringBuffer();
  logInfo.append("在").append(StringHelper.encodeHTML(new Date())).append(
    "开始执行创建索引的任务调度");
  logger.info(logInfo.toString());
  try {
   List m_list = mediaContent.findByMediaid(null, null);
   IndexFactory.getInstance().createIndex(m_list,
     new AddMediaContentDocument(),
     indexPath.getMediaIndexPath());
   List c_list = catalogArticleData.loadAllData();
   IndexFactory.getInstance().createIndex(c_list,
     new AddCatalogArticleDataDocument(),
     indexPath.getCatalogIndexPath());
   logger.info(StringHelper.encodeHTML(new Date()) + "创建索引任务完成!");

  } catch (Exception e) {
   logger.error("使用Spring定时器创建索引出错!");
  }
 }
}

然后在applicationContext.xml中配置:

 <!-- =========================Quartz TimeTask  配置 ========================= -->

 <bean id="indexJob"
  class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass">
   <value>
    com.finegold.digimus.service.config.IndexQuartz<!-- 刚刚写的类-->
   </value>
  </property>
  <property name="jobDataAsMap">
   <map><!-- 类里一些属性 key:propertyName-->
    <entry key="indexPath">
     <ref local="indexPath" />
    </entry>
    <entry key="catalogArticleData">
     <ref bean="catalogArticleDataService" />
    </entry>
    <entry key="mediaContent">
     <ref bean="mediaContentService" />
    </entry>
   </map>
  </property>
 </bean>

<!-- 配置那个任务在何时执行 -->

 <bean id="cronTrigger"
  class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail">
   <ref bean="indexJob" />
  </property>
  <property name="cronExpression">
   <value>0 9 * * * ?</value>
   <!--<value>* * 23 * * ?</value>-->
  </property>
 </bean>

<!-- 将任务放入 SchedulerFactoryBean--> 
<bean id="scheduler"
  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
   <list>
    <ref bean="cronTrigger" />
   </list>
  </property>
 </bean>

这只是其中的一种方式,还有其它的方式。请等待......

分享到:
评论

相关推荐

    SpringQuartz的使用文档

    SpringQuartz是一个强大的任务调度框架,它在Java应用程序中用于自动化执行特定任务,如定时生成文件、统计数据或执行后台清理工作。Quartz是开源的,具有高度灵活的调度功能,能够根据预定义的时间表触发任务,同时...

    Spring Quartz1.8.x

    另外,合理设计任务的依赖关系,以及定期清理不再需要的Trigger,都是优化Spring Quartz使用的关键。 通过以上介绍,我们可以看到Spring Quartz 1.8.x为Java开发者提供了一个强大且灵活的任务调度解决方案,使得在...

    关于spring中quartz的配置

    如果使用的是Spring Boot,可以在`application.properties`或`application.yml`中配置Quartz,并通过`@EnableScheduling`注解启用定时任务支持。 8. **动态管理定时任务** Spring提供的`SchedulerFactoryBean`...

    spring quartz 表达式在线生成器

    2. **Spring与Quartz集成**:介绍如何在Spring应用中配置Quartz,包括使用`@EnableScheduling`注解开启调度,以及如何定义`@Scheduled`注解的任务。 3. **Cron表达式**:详细讲解Cron表达式的组成部分和语法,以及...

    spring Quartz的jar包

    在Spring Quartz的使用中,关键知识点包括: 1. **配置**:在Spring应用上下文配置文件中,你需要声明一个SchedulerFactoryBean实例,它是Quartz调度器的Spring bean。通过设置相关的属性,如jobStoreType(用于...

    spring的quartz使用实例

    以下是对Spring整合Quartz使用实例的详细说明: 1. **Quartz简介** Quartz是一个强大的、完全开源的作业调度框架,它支持复杂的调度策略,如按日期、时间间隔或自定义表达式执行。Quartz可以在Java应用中作为独立...

    spring quartz定时任务demo

    在Java开发中,Spring框架与Quartz库的结合使用能够帮助开发者实现强大的定时任务功能。本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,...

    spring quartz相关jar包(多版本)

    关于标签"springquartz jar包",这表明这些 jar 文件是专门为整合 Spring 和 Quartz 而准备的。Spring 提供了对 Quartz 的支持,使得开发者可以通过 Spring 的 XML 配置或者注解方式声明和管理 Quartz 调度器,简化...

    Spring Quartz定时任务 jar包

    在使用Spring Quartz进行任务调度时,开发者需要创建Job类,实现`org.springframework.scheduling.quartz.JobDetailBean`,并设置相关的属性,如Job的名字和Group。同时,需要创建Trigger类,如`org.springframework...

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

    springQuartz.zip

    这个项目的核心在于如何使用Spring管理Quartz定时任务的配置和执行。让我们深入了解一下相关知识点: 1. **Quartz简介**:Quartz是开源的作业调度框架,它允许应用程序定义和调度任务,以便在特定的时间点或按照...

    spring quartz

    以下是如何在Spring应用中配置和使用Spring Quartz的步骤: 1. **添加依赖**:在项目中引入Quartz和Spring的相应依赖库。 2. **配置Spring**:在Spring配置文件中声明`SchedulerFactoryBean`,并配置相关的Quartz...

    Spring Quartz Demo

    通过这个示例项目,开发者可以学习如何在实际应用中使用Spring和Quartz进行任务调度,理解如何定义、配置和管理定时任务,以及如何在Spring环境中优雅地集成Quartz。这不仅有助于提高代码的可维护性,还能使定时任务...

    spring整合quartz使用jdbc存储

    下面将详细介绍如何进行Spring与Quartz的整合,以及使用JDBC存储的相关步骤。 1. **Spring与Quartz的整合** 首先,我们需要在项目中引入Spring和Quartz的相关依赖。在Maven或Gradle的pom.xml或build.gradle文件中...

    Spring Quartz如何动态配置时间

    在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...

    spring quartz 表达式生成器 网页版

    Spring Quartz 是一个强大的...使用这个在线生成器,你可以快速地为你的Spring Quartz任务创建合适的调度表达式,提高开发效率。确保正确地将工具集成到项目中,并根据需要调整配置,以实现灵活且准确的定时任务管理。

    spring-quartz jar包

    Quartz是Java平台上的一个强大、完全可移植的作业调度库,可以用来创建复杂的调度任务,而Spring则是一个广泛使用的应用框架,提供了依赖注入、AOP(面向切面编程)等功能,将两者结合可以实现灵活的定时任务调度。...

    quartz和spring-quartz

    Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...

    spring+quartz使用jar包

    1. **Spring与Quartz的整合**:Spring 提供了对Quartz的集成支持,通过`org.springframework.scheduling.quartz`包中的类,如`SchedulerFactoryBean`和`ThreadPoolTaskExecutor`,可以轻松地将Quartz纳入Spring的...

    动态加载属性文件与SpringQuartz的应用

    在IT行业中,动态加载属性文件和Spring Quartz的整合应用是一个重要的技术话题,特别是在构建大型、分布式和可扩展的系统时。下面将详细讲解这两个概念及其相互间的应用。 首先,我们来了解一下动态加载属性文件。...

Global site tag (gtag.js) - Google Analytics