最近忙于项目,一直没有更新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是一个强大的任务调度框架,它在Java应用程序中用于自动化执行特定任务,如定时生成文件、统计数据或执行后台清理工作。Quartz是开源的,具有高度灵活的调度功能,能够根据预定义的时间表触发任务,同时...
另外,合理设计任务的依赖关系,以及定期清理不再需要的Trigger,都是优化Spring Quartz使用的关键。 通过以上介绍,我们可以看到Spring Quartz 1.8.x为Java开发者提供了一个强大且灵活的任务调度解决方案,使得在...
如果使用的是Spring Boot,可以在`application.properties`或`application.yml`中配置Quartz,并通过`@EnableScheduling`注解启用定时任务支持。 8. **动态管理定时任务** Spring提供的`SchedulerFactoryBean`...
2. **Spring与Quartz集成**:介绍如何在Spring应用中配置Quartz,包括使用`@EnableScheduling`注解开启调度,以及如何定义`@Scheduled`注解的任务。 3. **Cron表达式**:详细讲解Cron表达式的组成部分和语法,以及...
在Spring Quartz的使用中,关键知识点包括: 1. **配置**:在Spring应用上下文配置文件中,你需要声明一个SchedulerFactoryBean实例,它是Quartz调度器的Spring bean。通过设置相关的属性,如jobStoreType(用于...
以下是对Spring整合Quartz使用实例的详细说明: 1. **Quartz简介** Quartz是一个强大的、完全开源的作业调度框架,它支持复杂的调度策略,如按日期、时间间隔或自定义表达式执行。Quartz可以在Java应用中作为独立...
在Java开发中,Spring框架与Quartz库的结合使用能够帮助开发者实现强大的定时任务功能。本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,...
关于标签"springquartz jar包",这表明这些 jar 文件是专门为整合 Spring 和 Quartz 而准备的。Spring 提供了对 Quartz 的支持,使得开发者可以通过 Spring 的 XML 配置或者注解方式声明和管理 Quartz 调度器,简化...
在使用Spring Quartz进行任务调度时,开发者需要创建Job类,实现`org.springframework.scheduling.quartz.JobDetailBean`,并设置相关的属性,如Job的名字和Group。同时,需要创建Trigger类,如`org.springframework...
Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...
这个项目的核心在于如何使用Spring管理Quartz定时任务的配置和执行。让我们深入了解一下相关知识点: 1. **Quartz简介**:Quartz是开源的作业调度框架,它允许应用程序定义和调度任务,以便在特定的时间点或按照...
以下是如何在Spring应用中配置和使用Spring Quartz的步骤: 1. **添加依赖**:在项目中引入Quartz和Spring的相应依赖库。 2. **配置Spring**:在Spring配置文件中声明`SchedulerFactoryBean`,并配置相关的Quartz...
通过这个示例项目,开发者可以学习如何在实际应用中使用Spring和Quartz进行任务调度,理解如何定义、配置和管理定时任务,以及如何在Spring环境中优雅地集成Quartz。这不仅有助于提高代码的可维护性,还能使定时任务...
下面将详细介绍如何进行Spring与Quartz的整合,以及使用JDBC存储的相关步骤。 1. **Spring与Quartz的整合** 首先,我们需要在项目中引入Spring和Quartz的相关依赖。在Maven或Gradle的pom.xml或build.gradle文件中...
在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...
Spring Quartz 是一个强大的...使用这个在线生成器,你可以快速地为你的Spring Quartz任务创建合适的调度表达式,提高开发效率。确保正确地将工具集成到项目中,并根据需要调整配置,以实现灵活且准确的定时任务管理。
Quartz是Java平台上的一个强大、完全可移植的作业调度库,可以用来创建复杂的调度任务,而Spring则是一个广泛使用的应用框架,提供了依赖注入、AOP(面向切面编程)等功能,将两者结合可以实现灵活的定时任务调度。...
Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...
1. **Spring与Quartz的整合**:Spring 提供了对Quartz的集成支持,通过`org.springframework.scheduling.quartz`包中的类,如`SchedulerFactoryBean`和`ThreadPoolTaskExecutor`,可以轻松地将Quartz纳入Spring的...
在IT行业中,动态加载属性文件和Spring Quartz的整合应用是一个重要的技术话题,特别是在构建大型、分布式和可扩展的系统时。下面将详细讲解这两个概念及其相互间的应用。 首先,我们来了解一下动态加载属性文件。...