`
isiqi
  • 浏览: 16484582 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

spring-quartz学习

阅读更多

1.配置文件 applicationContext-quartz.xml

<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="clearImgTimerManager" class="com.mypro.manage.impl.ClearImgTimerManagerImpl">
</bean>



<!-- 创建一个Quartz工作,即配置ClearImgJob类,注意是用org.springframework.scheduling.quartz.JobDetailBean进行配置 -->
<bean id="clearImgJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.mypro.util.quartz.ClearImgJob">
</property>
<property name="jobDataAsMap">
<map>
<entry key="clearImgTimerManager" value-ref="clearImgTimerManager"></entry>
</map>
</property>
</bean>

<!-- 调度工作 -->
<bean id="cronClearImgTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="clearImgJob" />
</property>
<property name="cronExpression">
<value>0 58 23 * * ?</value>
</property>
</bean>

<!-- 将记录 定时插入数据库 begin-->
<bean id="recordTimerJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.mypro.util.quartz.RecordTimerJob">
</property>
<property name="jobDataAsMap">
<map>
<entry key="recordTimerManager" value-ref="recordTimerManager"></entry>
</map>
</property>
</bean>

<!-- 简单调度 -->
<bean id="simpleRecordTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="recordTimerJob"/>
</property>
<!-- 在5秒后启动5000 -->
<property name="startDelay" value="60000"></property>
<!-- 每一小时执行一次 36000000 24小时86400000-->
<property name="repeatInterval" value="120000"></property>
</bean>

<!-- //复杂的调度
<bean id="cronRecordTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="recordTimerJob" />
</property>
<property name="cronExpression">
<value>0 1-59 10 * * ?</value>
</property>
</bean>
-->


<!-- 启动工作 -->
<bean id="schedulerFactoryService" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronClearImgTrigger" />
<ref local="simpleRecordTrigger" />
</list>
</property>
</bean>


</beans>

2.java文件

/**
*
*/
package com.mypro.manage.impl;

import java.io.File;
import java.net.URL;

import org.apache.log4j.Logger;

import com.mypro.manage.ClearImgTimerManager;

/**
* @author
* 清除temp文件夹上传的没有用的图片,
* 防止项目大小不断扩大
*/
public class ClearImgTimerManagerImpl implements ClearImgTimerManager{

private Logger log = Logger.getLogger(this.getClass());
/**
* 清除WebRoot/temp文件夹下的图片
* @throws Exception
*/
public void clearImg() throws Exception{
//baseUrl=file:/E:/workspace/survey/WebRoot/WEB-INF/classes/
URL baseUrl = Thread.currentThread().getContextClassLoader().getResource("");
URL tempDirUrl = new URL(baseUrl, "../../temp");
File file = new File(tempDirUrl.toURI());
int k = tempDirUrl.toString().indexOf("file:/");
String tempDirStr = tempDirUrl.toString().substring(k+6);
//System.out.println("tempDirStr="+tempDirStr);

String[] tempList = file.list();
File temp = null;
if(tempList!=null){
for (int i = 0; i < tempList.length; i++) {
temp = new File(tempDirStr, tempList[i]);
if(temp.isFile()){
//判断时间
String fileName = temp.getName();
//获得扩展名
int j = fileName.lastIndexOf(".");
//String prefix = fileName.substring(j);
String fileNameWithOutPrefix = fileName.substring(0,j);
long interval = 24*60*60;
//删除
try{
if(Long.parseLong(fileNameWithOutPrefix)<(System.currentTimeMillis()-interval)){
temp.delete();
System.out.println(fileName+"被定时删除了");
}
}catch(Exception e){
log.info("定时删除temp文件夹中的文件:"+fileName+"删除失败");
}

}
}
}



}

public static void main(String[] args) {
String path = "D:\\Java\\Tomcat5.5.23\\webapps\\survey\\temp";
File file = new File(path);
String[] tempList = file.list();
File temp = null;
if(tempList!=null){
for (int i = 0; i < tempList.length; i++) {
temp = new File(path+File.separator + tempList[i]);
if(temp.isFile()){
//判断时间
String fileName = temp.getName();
//获得扩展名
int j = fileName.lastIndexOf(".");
//String prefix = fileName.substring(j);
String fileNameWithOutPrefix = fileName.substring(0,j);
System.out.println("fileNameWithOutPrefix="+fileNameWithOutPrefix);

}
}
}
}
}

3.java文件

/**
*
*/
package com.mypro.util.quartz;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

import com.mypro.manage.ClearImgTimerManager;

/**
* @author wangjb
* 定时清除项目temp文件夹的暂时图片,以防项目不断扩大
* 相当于TimerTask的等价类
*/
public class ClearImgJob extends QuartzJobBean{

private ClearImgTimerManager clearImgTimerManager;

@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
try{
clearImgTimerManager.clearImg(); //清除图片
}catch(Exception e){
}
}

public ClearImgTimerManager getClearImgTimerManager() {
return clearImgTimerManager;
}

public void setClearImgTimerManager(ClearImgTimerManager clearImgTimerManager) {
this.clearImgTimerManager = clearImgTimerManager;
}


}

4.//测试

/**
*
*/
package com.hc360.test.manager.quartz;

import org.quartz.JobDetail;
import org.springframework.scheduling.quartz.CronTriggerBean;
import org.springframework.scheduling.quartz.JobDetailBean;

import com.hc360.test.BaseTestCase;

/**
* @author myhello
* 参考:http://dolphin-ygj.javaeye.com/blog/368874
*/
public class ClearImgTimerManagerTest extends BaseTestCase{

//测试,看定时有没有启动,查看方式 在JobDetail处加断点,进行调试查看
public void testTimer() throws Exception{
CronTriggerBean triggerBean = (CronTriggerBean)this.applicationContext.getBean("cronClearImgTrigger");

org.quartz.Scheduler scheduler = (org.quartz.impl.StdScheduler)this.applicationContext.getBean("schedulerFactoryService");
JobDetail job = triggerBean.getJobDetail();

scheduler.triggerJob(job.getName(),job.getGroup());
System.out.println(triggerBean.getNextFireTime());

}

}

分享到:
评论

相关推荐

    quartz和spring-quartz

    学习Quartz和Spring-Quartz,不仅需要理解它们的基本概念,还要掌握如何在实际项目中进行配置和使用。例如,创建一个定时任务,你需要定义Job类,配置Trigger,然后在Spring的配置文件中设置Scheduler。此外,熟悉...

    spring-quartz-example

    总结来说,"spring-quartz-example"是一个很好的学习资源,它演示了如何在Spring环境中集成和配置Quartz,创建并管理定时任务。通过分析这个项目,开发者不仅可以掌握Spring与Quartz的结合使用,还能了解到如何设计...

    spring-quartz-021

    总结起来,"spring-quartz-021"是一个学习和实践Spring与Quartz集成的实例,它展示了如何利用Spring的管理能力,配合Quartz的强大调度功能,实现基于corn表达式的定时任务。对于Java开发者来说,掌握这种集成方式能...

    spring-quartz-02

    Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等众多功能;而 Quartz 是一个强大的作业调度库,可以用于...

    spring整合quartz动态定时任务demo-spring-quartz-demo.zip

    通过学习这个示例,开发者能够掌握如何在Spring应用中设置和管理定时任务,这对于构建有定时需求的服务,如后台数据处理、定时通知等功能,是非常有价值的。同时,这也展现了Spring的灵活性和Quartz的强大调度能力,...

    spring-quartz-01

    这个项目对学习如何在 Spring 应用程序中使用 Quartz 实现定时任务非常有帮助。通过理解以上知识点,开发者可以扩展这个基础示例,将其应用到实际项目中,例如定期备份数据库、发送邮件通知、执行系统维护任务等。在...

    Spring-quartz计划任务

    **Spring-quartz计划任务** ...同时,可以通过阅读官方文档、博客(如给出的链接)和其他在线资源,学习更多关于Spring与Quartz集成的高级用法,如集群配置、任务持久化等,以便在实际项目中更好地运用这一技术。

    Spring-Quartz

    标题“Spring-Quartz”指的是将Spring框架与Quartz任务调度库结合使用的主题。Quartz是一个开源的作业调度框架,可以用于创建、管理和执行计划任务。Spring框架则为Java应用程序提供了一个全面的基础设施,包括依赖...

    基于spring-boot+quartz的CRUD任务管理系统源码+项目说明.zip

    基于spring-boot+quartz的CRUD任务管理系统源码+项目说明.zip基于spring-boot+quartz的CRUD任务管理系统源码+项目说明.zip基于spring-boot+quartz的CRUD任务管理系统源码+项目说明.zip基于spring-boot+quartz的CRUD...

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

    Spring 中的 Quartz 配置-Spring 定时器-...我们学习了 Quartz 的基本概念,了解了如何在 Spring 配置文件中定义 Quartz 的 bean,并了解了 Cron 表达式的使用。最后,我们总结了 Quartz 的优点,了解了它的强大功能。

    spring-quartz-demo:带有 java 配置的 Spring-quartz-demo

    这个项目提供了一个学习 Spring 与 Quartz 结合使用的良好起点,对于需要实现定时任务的 Java 开发者来说,非常有价值。通过研究这个示例,你可以了解到如何在 Spring 环境下优雅地管理和执行定时任务。

    quartz-2.2.3所需Jar包和spring-webmvc-4.2.6所有jar

    4. **Spring Context Support**:学习如何使用Spring提供的支持类来集成邮件服务、消息队列(JMS)以及定时任务(如Quartz)。 5. **Spring Framework版本管理**:理解不同版本之间的差异,如新特性、改进和兼容性...

    Springboot2-Quartz 后台可动态配置的定时任务

    SpringBoot提供了对Quartz的自动配置支持,所以只需要引入`spring-boot-starter-quartz`模块即可。 2. 配置Quartz:在application.properties或application.yml文件中,可以设置Quartz的一些基本属性,如线程池大小...

    spring-boot-starter-validation-1.3.5.RELEASE.zip

    它们可以基于各种技术实现,如Redis的延时队列、Quartz或Spring Task等。 为了深入了解这些概念,你可以阅读Spring Boot和Bean Validation的官方文档,探索odelay项目的源码,以及研究延时队列和定时任务的实现原理...

    spring-boot-web-restfulcrud代码示例

    这涵盖了从项目的初始化、Controller 的编写、服务层的设计到与数据库的交互等多个方面,是学习和实践 Spring Boot Web 开发的一个很好的起点。通过这个项目,你可以深入理解 Spring Boot 的自动化配置、RESTful API...

    spring任务调度(Quartz )

    Spring中的任务调度是实现应用程序自动化运行任务的重要工具,而Quartz是Java领域广泛使用的开源任务调度框架。在本文中,我们将深入探讨如何在Spring中集成Quartz进行任务调度,并通过一个简单的示例来理解其工作...

    quartz-spring-demo

    Quartz 是一个开源的任务调度框架,它允许开发者创建、安排和执行定时任务。Spring 是一个广泛应用的Java企业级应用框架,提供了丰富的功能,...这个简单的演示项目是一个学习和实践 Quartz 和 Spring 整合的好起点。

    spring-context-support源码

    深入学习`spring-context-support`源码,不仅能让我们理解Spring如何整合第三方库,还能帮助我们掌握设计模式、并发处理和企业级服务的最佳实践。通过实践和调试源码,开发者可以提高解决问题的能力,从而在实际项目...

    spring-boot学习demo.zip_DEMO_SpringBoot_spring boot_spring-boot_sp

    SpringBoot学习Demo是一个针对初学者的入门项目,旨在帮助开发者快速理解并掌握Spring Boot的核心概念和用法。Spring Boot是Spring框架的一个模块,它简化了创建独立的、生产级别的基于Spring的应用程序的过程,通过...

    spring+quartz demo

    在这个 "spring+quartz demo" 中,我们可以学习到如何将这两个框架整合起来,实现定时任务的自动化执行。以下是一些关键知识点: 1. **Spring 配置 Quartz**: 在 Spring 的配置文件(如 `applicationContext.xml`...

Global site tag (gtag.js) - Google Analytics