文档章节

spring 定时器

黑帽子
 黑帽子
发布于 2013/07/01 16:10
字数 846
阅读 696
收藏 4
点赞 0
评论 0

Java代码   收藏代码  

  1. 第一种 Java Timer定时  



spring配置文件:
<bean id= "reportTimerTask" class ="com.flex.thread.TaskJob"></ bean>(或者在TaskJob类中添加注释:)
<bean id= "scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask" >
            <property name="timerTask" ref="reportTimerTask" />
           <!-- 设置启动延迟 -->
          <property name="delay" >
          <value> 10000</value >
           </property>
         <!-- 后续延迟 -->
             <property name="period" >
             <value> 6000</value >
             </property>
</bean>
      
<bean class="org.springframework.scheduling.timer.TimerFactoryBean" > 
               <property name="scheduledTimerTasks" >    
               <list>< ref bean ="scheduleReportTask"/></ list>
               </property>
</bean>

class类  
 
package com.flex.thread;

import java.util.TimerTask;
public class TaskJob extends TimerTask {

       @Override
       public void run() {

         ...
     }  
}


Java代码   收藏代码  

  1. 第二种 Quartz定时器  



Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:
首先我们来写一个被调度的类:
package com.web.quartz;

public class TaskReportJob {

       protected void work() {
            System. out.println("------定时器运行中------" );
      }

}
Spring的配置文件:
<beans>
<!-- 要调用的工作类 -->
<bean id= "quartzJob" class ="com.web.quartz.TaskReportJob" ></bean>
<!-- 定义调用对象和调用对象的方法 -- >
<bean id= "jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
    <!-- 调用的类 -->
    <property name = "targetObject" >
        <ref bean ="quartzJob" />
    </property>
    <!-- 调用类中的方法 -- >
    <property name = "targetMethod" >
        <value>work</value >
    </property>
</bean>
<!-- 定义触发时间 -- >
<bean id= "doTime" class ="org.springframework.scheduling.quartz.CronTriggerBean" >
    <property name = "jobDetail" >
        <ref bean ="jobtask" />
    </property>
    <!-- cron 表达式 -- >
    <property name = "cronExpression" >
        <value> 10,15,20,25,30,35,40,45,50,55 * * * * ? </value >
    </property>
</bean>
<!-- 总管理类 如果将lazy- init= 'false' 那么容器启动就会执行调度程序  -- >
<bean id= "startQuertz" lazy-init = "false" autowire = "no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
    <property name = "triggers" >
        <list>
            <ref bean ="doTime" />
        </list>
    </property>
</bean>
</beans>



第三种  

定义一个类继承org.springframework.scheduling.quartz.QuartzJobBean;

Java代码   收藏代码  

  1. import java.util.ArrayList;  

  2. import java.util.HashMap;  

  3. import java.util.Iterator;  

  4. import java.util.List;  

  5. import java.util.Map;  

  6.   

  7. import org.apache.commons.logging.Log;  

  8.   

  9. import org.apache.commons.logging.LogFactory;  

  10. import org.quartz.JobExecutionContext;  

  11. import org.quartz.JobExecutionException;  

  12. import org.springframework.jdbc.core.JdbcTemplate;  

  13. import org.springframework.scheduling.quartz.QuartzJobBean;  

  14.   

  15. import com.zdvictory.approve.business.dao.AppBusiBasicDAO;  

  16.   

  17. public class UpdateWorkflowJob extends QuartzJobBean{  

  18.     private JdbcTemplate jdbcTemplate ;  

  19.     private AppBusiBasicDAO appBusiBasicDAO ;  

  20.       

  21.         private Log log = LogFactory.getLog(UpdateWorkflowJob.class);  

  22.     @Override  

  23.     protected void executeInternal(JobExecutionContext arg0)throws JobExecutionException {  

  24.         System.out.println("执行过程");  

  25.     }  

  26.       

  27.     public AppBusiBasicDAO getAppBusiBasicDAO() {  

  28.         return appBusiBasicDAO;  

  29.     }  

  30.   

  31.     public void setAppBusiBasicDAO(AppBusiBasicDAO appBusiBasicDAO) {  

  32.         this.appBusiBasicDAO = appBusiBasicDAO;  

  33.     }  

  34.   

  35.     public JdbcTemplate getJdbcTemplate() {  

  36.         return jdbcTemplate;  

  37.     }  

  38.   

  39.     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {  

  40.         this.jdbcTemplate = jdbcTemplate;  

  41.     }  

  42. }  



2、定义配置文件

Java代码   收藏代码  

  1. <?xml version="1.0" encoding="UTF-8"?>  

  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  

  3. <beans>     

  4.     <bean id="updateWorkflowJob"  

  5.         class="org.springframework.scheduling.quartz.JobDetailBean">  

  6.         <property name="jobClass">  

  7.             <value>  

  8.                 com.zdvictory.workflow.timer.UpdateWorkflowJob  

  9.             </value>  

  10.         </property>  

  11.         <property name="jobDataAsMap">  

  12.             <map>  

  13.                 <entry key="jdbcTemplate">  

  14.                     <ref bean="jdbcTemplate_sjjh"/>  

  15.                 </entry>  

  16.                 <entry key="appBusiBasicDAO">  

  17.                     <ref bean="appBusiBasicDAO"/>  

  18.                 </entry>  

  19.             </map>  

  20.         </property>  

  21.     </bean>  

  22.       

  23.     <bean id="updateWorkflowJobTrigger"  

  24.         class="org.springframework.scheduling.quartz.CronTriggerBean">  

  25.         <property name="jobDetail">  

  26.             <ref bean="updateWorkflowJob" />  

  27.         </property>  

  28.         <property name="cronExpression">  

  29.         <!-- 每分钟执行一次 -->  

  30.             <value>0 0/1 8-23 * * ?</value> 8-23:早上8点至晚上23点正常执行  

  31.         </property>  

  32.     </bean>  

  33.     <!-- 启动定时器 -->  

  34.     <bean id="start" lazy-init="false"  

  35.         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  

  36.         <property name="triggers">  

  37.             <list>  

  38.                 <ref bean="updateWorkflowJobTrigger" />  

  39.             </list>  

  40.         </property>  

  41.     </bean>  

  42. </beans> 


Java代码   收藏代码  

  1. 表达式意义   



"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触发

© 著作权归作者所有

共有 人打赏支持
黑帽子
粉丝 16
博文 53
码字总数 25680
作品 0
珠海
高级程序员
spring+quartz 定时器使用

项目使用:spring+springMVC+JPA+Maven 1、在pom.xml中引用quartz的jar包 <!-- quartz --><dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version......

杀丶破狼 ⋅ 2015/10/13 ⋅ 1

SpringMVC框架使用注解执行定时任务

在项目开发过程中,免不了会有一些定时任务。今天就给大家一个SpringMVC框架中利用注解的方式执行定时任务的示例代码 使用到的JAR文件: 点击下列Jar文件会跳到我的网盘下载 aopalliance-1....

Carl_ ⋅ 2015/07/23 ⋅ 0

Spring定时器(使用注解)

先需要在springMVC的配置文件中,配置定时器的扫描注解 <!-- 定时器开关 开始--> task:annotation-driven / 定时器的实现代码 package com.test.control.base;import org.springframework.s...

杀丶破狼 ⋅ 2015/06/24 ⋅ 2

从Spring-Session源码看Session机制的实现细节

去年我曾经写过几篇和 Spring Session 相关的文章,从一个未接触过 Spring Session 的初学者视角介绍了 Spring Session 如何上手,如果你未接触过 Spring Session,推荐先阅读下「从零开始学...

徐靖峰 ⋅ 04/20 ⋅ 0

Spring Boot魔法的背后

Spring Boot的魔法 Spring Boot是一个基于Spring的框架,遵循“约定胜于配置”的理念,提供一套方便的方法来快速创建可执行的Spring应用。具体来说,以往我们开发一个Java Web端或服务端程序...

jacobwu ⋅ 05/10 ⋅ 0

SpringMVC中定时器继承Task后无法对service注入问题

最近在做一个Spring+MyBatis的一个项目,其中用到了Redis的存储,然后遇到问题是这样的: RedisTask是通过定时器来每分钟像数据库里推送的,于是就有了 然后在定时器的任务中通过对Redis的调...

Pig-man ⋅ 2016/03/21 ⋅ 0

程序对批量数据写入数据库的优化--引入Redis并通过定时器来触发

没错,还是上篇文章提到的那个SpringMVC+Mybatis的项目,在客户调我方接口,疯狂的给我们insert数据的时候,应该想到一些优化方案,于是Redis就被引用了。 关于Redis的客户端,服务端的一些用...

Pig-man ⋅ 2016/03/21 ⋅ 0

spring mvc 注解详解

1. 声明Bean的注解: 1.1 @Component : 组件,没有明确的角色 1.2 @Service : 在业务逻辑层(service层)使用 1.3 @Repository : 在数据访问层(dao层)使用 1.4 @Controller : 在展现层(MVC--Spr...

坚持30天 ⋅ 2017/10/19 ⋅ 0

浅谈Jfinal急速开发框架

使用Jfinal一段时间了,记得当初14年吧,为了建立一个简单的门户网站,想找个轻量型的急速开发框架,然后搜到Jfinal,然后用了一段时间后,确实不错, 现在吧,随着时间的推移,作者对JFinal的版本迭代...

尾生 ⋅ 2016/11/24 ⋅ 1

Springcloud各层框架注解含义

声明Bean的注解: @Component : 组件,没有明确的角色 @Service : 在业务逻辑层(service层)使用 @Repository : 在数据访问层(dao层)使用. @Controller : 在展现层(MVC--SpringMVC)使用 注入Bea...

0了凡0 ⋅ 2016/09/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 29分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 48分钟前 ⋅ 8

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部