Spring3中定时器的配置使用之Quartz

spring3.0加quartzjar包大全 spring3.0加quartzjar包大全 spring3.0的全部jar包 加上spring quartz的多个版本jar包 quartz-1.8.5.jar quartz-commonj-2.1.6.jar slf4j-api-1.5.6.jar slf4j-log4j12-1.5.6.jar quartz-1.8.5.jar quartz-2.1.6.jar slf4j-1.7.2.jar slf4j-api-1.5.6.jar 立即下载

需求:到了一定时间清理一下数据库或删除前一天的东西,或者每天凌晨自动执行任务
分析:机械的人工操作是不行的,这时就会想到定时器,说到定时器,一定会想到Timer,但是他只能简单的进行时间单位类似倒计时的功能实现,如果要精确每年每月的日期甚至星期几,那么换算起来就比较麻烦,这里可以用Spring与Quartz整合来完成定时器的实现。
虽然Quartz已经发布了2.X版本,但是Spring3目前只能整合Quartz1.8.5及以下版本。
xml:

<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:task="http://www.springframework.org/schema/task" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/task  
    http://www.springframework.org/schema/task/spring-task-3.0.xsd">
   <!--  
   这里加入了  
   xmlns:task="http://www.springframework.org/schema/task"  
   http://www.springframework.org/schema/task   
   http://www.springframework.org/schema/task/spring-task-3.0.xsd  
   --> 
 <!-- 两种定时器配置,任选其一即可   -->   
 <!--  spring3.0之前的用法,配置比较繁琐 --> 
  <!-- 值班提醒定时器  这个是定时器要调用方法的类 -->   
  <bean id="deletePicTimer" class="com.newauto.util.DeletePicTimer" > </bean>         
  <!-- 定义调用对象和调用对象的方法   -->     
   <bean id="jobtaskista" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">         
     <!-- 调用的类 -->           
     <property name="targetObject">
  <ref bean="deletePicTimer"/>          
  </property>           
  <!-- 调用类中的方法 -->           
  <property name="targetMethod">           
      <value>deletePic</value>       
  </property>    
 </bean>         
  <!-- 复杂触发器 -->  
<bean id="remindCronTriggerista" class="org.springframework.scheduling.quartz.CronTriggerBean">   
   <property name="jobDetail">   
    <ref bean="jobtaskista"/>   
   </property>  
      <property name="cronExpression">  
        <!--  每天23:59:59调用一次 -->  
          <value>59 59 23 * * ?</value>  
       </property>   
 </bean>  
  <!-- 调度工厂  -->
 <bean id="schedulerista" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">    
   <ref bean="remindCronTriggerista"/>    
  </property>    
 </bean>
<!--  spring3.0之后的新用法,配置有变化,而且比以前简单了很多 --> 
 <!-- 定时器  这个是定时器要调用方法的类 --> 
  <bean id="deletePicTimer" class="com.newauto.util.DeletePicTimer"></bean>
  <!-- 定义调用对象和调用对象的方法   --> 
  <task:scheduled-tasks>
    <!-- 调用的类deletePicTimer    调用类中的方法deletePic   这里表示的是每天23:59:59调用一次 -->
    <task:scheduled ref="deletePicTimer" method="deletePic" cron="59 59 23 * * ?" />
  </task:scheduled-tasks> 

</beans>

java 代码:


public class DeletePicTimer
{
    private static boolean isRunning = false;    
    private final Logger logger = Logger.getLogger(DeletePicTimer.class);
    public void deletePic()
    {
        // 为防止24小时执行下来,任务还未执行完(当然,一般任务是没有这么长的),
        // 避免第二次又被调度以引起执行冲突,设置了当前是否正在执行的状态标志isRunning
        if (!isRunning)
        {
            isRunning = true;
            logger.info("开始执行指定任务");
            try
            {
                ClassLoader cl = Thread.currentThread().getContextClassLoader();
                InputStream is = cl.getResourceAsStream("picpath.properties");
                Properties p = new Properties();
                p.load(is);
                String picpath = p.getProperty("picpath");
                // 声明变量
                File[] fls = null;
                File file = new File(picpath);
                if (file.exists() && file.isDirectory())
                {
                    // 文件夹*是否存在
                    fls = file.listFiles();
                    if (fls != null)
                    {
                        for (File fl : fls)
                        {
                            fl.delete();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                logger.error("删除失败!");
            }
            isRunning = false;
            logger.info("指定任务执行结束");
        }
        else
        {
            logger.error("上一次任务执行还未结束");
        }
    }
}

注:把存放图片的路径配置在picpath.properties中,用到时直接读取,也方便以后修改,不用再改动源程序代码。

cronExpression表达式:
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
表达式意义
“0 0 12 * * ?” 每天中午12点触发
“0 15 10 ? * *” 每天上午10:15触发
“0 15 10 * * ?” 每天上午10:15触发
“0 15 10 * * ? *” 每天上午10:15触发
“0 15 10 * * ? 2005” 2005年的每天上午10:15触发
“0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发
“0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发
“0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
“0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发
“0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发
“0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发
“0 15 10 15 * ?” 每月15日上午10:15触发
“0 15 10 L * ?” 每月最后一日的上午10:15触发
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发
“0 6 * * *” 每天早上6点
“0 /2 * *”每两个小时
“0 23-7/2,8 * * *” 晚上11点到早上8点之间每两个小时,早上八点
“0 11 4 * 1-3” 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
“0 4 1 1 *” 1月1日早上4点

Buck-Boost电路实战:如何用LM2596模块快速搭建升降压电源(附元件选型指南) 本文详细介绍了如何使用LM2596模块快速搭建Buck-Boost升降压电路,包括硬件选型、电路搭建、示波器实测和进阶技巧。通过实测数据和避坑指南,帮助电子工程师解决电压不稳定、效率低下等常见问题,提升DC-DC变换器的设计水平。 阅读详情

相关推荐

数字IC物理验证实战 | 从Calibre LVS报告到Innovus定位的Debug全链路解析

本文详细解析了数字IC物理验证中Calibre LVS报告的Debug全流程,从INCORRECT NETS错误的初探到Innovus定位技巧,提供了实战案例和高效工具的使用方法。重点介绍了Calibre高亮功能、Innovus验证命令以及前后端工具联动的关键策略,帮助工程师快速定位和解决LVS问题,提升物理验证效率。

weixin_30919429的博客 127

Spring中的定时器配置

定时器种类 1.Timer比较单一,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行,一般用的较少。 2.Quartz是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来有些复杂。 3.Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。 从作业类继承分类主要分为两类: 1.作业类需要继承自特定的作业类基类,如Qua...

jc_benben的专栏 904

Java 开发 修改【冒险岛 079 私服】完整学习流程

第 1-2 天:环境搭建 + 运行原版 079 服务端,能正常登录游戏;第 3-4 天:纯配置文件修改,掌握倍率、属性、怪物、道具的修改,改出第一个「百倍经验私服」;第 5-10 天:Java 代码基础修改,掌握 Player/Skill/Monster 核心类的修改,实现技能无冷却、一刀秒怪、升级满属性;第 11-20 天:Java 代码进阶修改,掌握业务逻辑修改,实现死亡不掉经验、自动捡物、装备强化无失败;第 21-30 天。

萧曳丶 3903

Spring3定时任务

Spring 内部有一个 task 是 Spring 自带的一个设定时间自动任务调度,提供了两种方式进行配置,一种是注解的方式,而另外一种就是 XML 配置方式了;注解方式比较简洁,XML 配置方式相对而言有些繁琐,但是应用场景的不同,两者又各有优点,所以具体使用还是根据需求来划分;因为任务调度这样的需求,通常改动都是比较多的,如果用注解的方式改动就变得麻烦了,必须去重新编译;所以更多的时候推荐使用XML配置的方式使用 XML 配置定义一个 Task 类,添加一个测试方法。

少年闰土 537

FPGA实现串口的任意字节数接收

基于FPGA的任意字节数(单字节、多字节)的串口(UART)接收,真的不来看看吗?

孤独的单刀 1万+

21天教你学会PCIe专栏(14)--安全性考虑

1.1 定义安全性(Security):安全性是指保护系统免受未经授权的访问、攻击和破坏,确保数据的机密性、完整性和可用性。1.2 重要性数据保护:保护敏感数据,防止数据泄露和篡改。系统防护:防止恶意攻击,确保系统的稳定性和可靠性。合规性:满足行业标准和法律法规的要求,避免法律风险。用户信任:提高用户对系统的信任度,增强市场竞争力。通过今天的学习,你应该对PCIe安全性的重要性和常见威胁有了深入的了解,掌握了实施安全措施的方法和工具,以及安全开发的最佳实践。

xiaoheshang_123的博客 850

Spring3定时器

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34146986的博客 121

uniapp [全端兼容] - 实现集成配置百度语音识别转文字,长按或开启录音并将录音文件实时转换为文字,百度智能云API实现上传录音文件并转换成文字案例(苹果安卓App、微信小程序、移动端H5网页)

uniapp对接百度智能云语音识别,uniapp中实现语音识别(app+小程序),百度语音识别录音转文字_百度智能云,uniapp使用百度语音识别语音转文字,uniapp小程序调用百度语音识别,uni-app 百度语音识别文字并展示功能,uniapp配置自定义界面百度语音识别转文字和原生使用方式,uniapp使用百度语音,uni-app语音转文字功能,使用UniApp技术实现录音并将录音转换为文字,uniapp如何实现语音输入功能功能,Uniapp集成百度智能云API实现录音转文字详细教程完整示例代码dem

🏆 前端领域优质创作者 1万+

Spring3向Spring4升级过程中quartz修改

为什么80%的码农都做不了架构师?>>> ...

weixin_34355715的博客 336

GJB 5000B二级-II实施基础

本文主要描述GJB 5000B二级II实施基础与GJB 5000A的变化情况,以及过程域各条款的实施要点

Abel的博客 2585

ESP32-CAM 赋能 AI 视觉巡检小车:自主避障与目标追踪实现全解析

本文基于 ESP32-CAM 实现了低成本 AI 视觉巡检小车的核心功能,硬件成本<100 元,兼顾自主避障与目标追踪。算法升级:移植 YOLOv5nano 量化模型(INT8),提升目标检测精度(如识别巡检场景中的 “异常物体”“人员”);无线拓展:通过 MQTT 协议将巡检图像、距离数据上传到阿里云 / 腾讯云,实现远程监控;多传感器融合:增加温湿度(DHT11)、红外测温(MLX90614)模块,扩展巡检维度;路径规划:结合 SLAM 算法,实现自主建图与路径巡检。

weixin_42300449的博客 368

Spring3 的定时器任务

      Spring Security 3.0系列开发出来的时间并不长,不过目前已经有许多项目整合进入了Spring Security 3.0,原因是确实比2.0系列有了不上改进,不过目前关于Spring Security 3.0的中文开发文档和书籍太少了,下面张老师为大家介绍Spring Security 3.0的任务调度。       Spring3.0以后,自己已经完全支持更加精确的...

我爱技术男-江龙 175

Dify 第 4 篇 Dify 示例:数据库执行Agent

本文介绍了如何在Dify平台创建一个能够执行SQL查询的数据库Agent。通过安装并配置"通义千问"和"数据库"两个插件,实现自然语言到SQL语句的转换和执行。关键步骤包括:1)安装插件并配置API Key;2)设置默认数据库连接(建议使用只读账号);3)准备测试数据表结构。该Agent支持通过工具调用查询表结构、转换自然语言为SQL、执行查询并返回结果,同时提供了CSV查询和HTTP API接口功能。文中还提供了MySQL测试数据表的创建脚本和示例数据。

甘蓝的专栏 1160

在Spring3+Hibernate4环境中配置Quartz定时器,注入sessionFactory

最近在做javaweb 开发,碰到一个需求,需要在项目中设定一个定时器将数据库中符合条件的数据删除,那么怎么做呢?Google了很久,找到很多办法,但是这些方法都没有提到如何在定时器中注入sessionFactory。找到的也是在hibernate3中配置,方法并不适用于hibernate4。现将方法记录,方便自己日后需要。引用的jar包为quartz-2.2.1.jar,quartz-jobs-

xiaorain0510的博客 2456

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring 定时器配置 基于配置文件 (使用 Spring3.2 、 quartz-1.6.5)

Spring 配置文件  quartz-1.6.5.jar <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

Black Monkey 2098

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Spring3.1.1 quartz1.8.6 定时器配置

原文地址:http://blog.csdn.net/itpinpai/article/details/8559599

YHC 1052

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

quartz-2.2.2.jar + spring 3.2 定时器配置

0 51 11 30 5 ? 2016

u011380813的专栏 1288

dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(十一)之 spring中定时器quartz的整合续集(Quartz集群配置)

前面写过一篇关于dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(九)之 spring中定时器quartz的整合。今天主要来继续总结quartz在集群中的使用。1、说明 quartz可以通过jdbc直连连接到MYSQL数据库,读取配置在数据库里的job初始化信息,并且把job通过java序列化到数据库里,这样就使得每个job信

东子的博客 细节决定成败,点滴铸就辉煌。 2911

Spring使用定时器任务时,配置定时器为非并发调用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34400525的博客 395

java spring定时器配置_【spring配置】——spring整合Quartz定时器

第一种:为普通java类中的某个方法配置跑批任务MethodInvokingJobDetailFactoryBeanCronTriggerBeanSchedulerFactoryBean1.定义要跑批的类和方法:packagecom.xy.utils.quartz;importorg.joda.time.DateTime;importorg.slf4j.Logger;importorg.s...

weixin_33746833的博客 674

关于Spring中定时器的配置

从实现技术上来看,定时器分为三种: 1.Timer比较单一,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行,一般用的较少。 2.Quartz是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来有些复杂。 3.Spring3.0以后自带的task,可以将它看成一个轻量级...

望远烬的博客 229

Spring整合Quartz实现动态定时器

一、版本说明 spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错。 原因:spring对于quartz的支持实现,org.springframework.scheduling.quartz.CronTriggerBean继承了org.quartz.CronTrigger,在quartz1.x系列中org.quartz.CronTrig...

曾令胜的博客 307

spring定时器的简单使用

第一步: 在pom.xml中加入依赖 &lt;properties&gt; &lt;spring.version&gt;4.2.4.RELEASE&lt;/spring.version&gt; &lt;quartz.version&gt;2.2.2&lt;/quartz.version&gt; &lt;/properties&gt; &lt;dependencies...

Romantic_321的博客 383
上一篇: Java如何读取properties文件
下一篇: spring的常用注解以及什么叫IOC
Java_Mr_Zheng
博客等级 码龄11年 18粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值