spring定时器如何使用?

步骤1. 定义job bean

   1.TaskScheduler构造

   2.初始化相关服务

<bean id="xxxxScheduler" class="com.xxxx.TaskScheduler">
        <property name="xxxxService" ref="xxxxService"/>
        <property name="xxxxService" ref="xxxxService"/>
        <property name="xxxxService" ref="xxxxService"/>
        <property name="xxxxService" ref="xxxxService"/>
        <property name="xxxxService" ref="xxxxService"/>
        <property name="xxxxService" ref="xxxxService"/>
     </bean>

步骤2. 定义一个joblist bean来统一管理job

<bean id="listScheduler" class="com.xxxx.ListScheduler">
        <property name="schedulerList">
          <list> 
                  <ref bean="xxxxScheduler" />
                 <ref bean="xxxxScheduler"/>

       <ref bean="xxxxScheduler" />
                 <ref bean="xxxxScheduler"/>  
          </list>
       </property>
       <property name="FinishHour" value="xxx"/>
       <property name="ExecHour" value="xxx"/>
  </bean>

步骤3.定义job factorybean和CronTriggerBean

<!--注册定时器信息-->

<bean id="SchedulerTriggerJobDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="listScheduler" />//定时任务列表
        <property name="targetMethod" value="start" />//启动方法
        <property name="concurrent" value="false" />//指定最终封装出的任务是否有状态
    </bean>

<!--说明:Spring中使用Quartz的2种方法(extends QuartzJobBean与使用MethodInvokingJobDetailFactoryBean)-->

<bean id="SchedulerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

<!--配置定时器任务的调度器-->
    <property name="jobDetail" ref="SchedulerTriggerJobDetail" />
    <property name="cronExpression">
      <value>0 0 0 * * ?</value>
    </property>
  </bean>

<!--说 明:org.springframework.scheduling.quartz.CronTriggerBean是spring提供的触发器,在这个 触发器中设定了要触发的job,同时设定了触发时间(cronExpression)-->

4 <!--注册监听器-->

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
   <property name="schedulerName" value="xxxx"/>
    <property name="quartzProperties">
      <props>
        <prop key="org.quartz.threadPool.threadCount">2</prop>
      </props>
    </property>
    <property name="triggers">
      <list>
        <ref bean="schedulerTrigger" />
      </list>
    </property>
  </bean>

<!--说明:org.springframework.scheduling.quartz.SchedulerFactoryBean这是一个spring的工厂bean,监听器:当spring关闭前,自动关闭scheduler,在triggers属性列表中加入定义的触发器,这里可以定义多个触发器-->

spring定时器实现原理?

核心概念

1、scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。
2、JobDetail是一个可执行的工作,它本身可能是有状态的。
3、Trigger代表一个调度参数的配置,什么时候去调。
4、当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。
5、scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效率。

转载于:https://www.cnblogs.com/davidwang456/archive/2013/01/21/2870309.html

spring定时器分析相关推荐

  1. spring定时器@Scheduled的原理和实现分析

    目录 一 简单介绍 二 为什么要加@EnableScheduling, @Scheduled才生效 三 什么时候什么地方解析@Scheduled 四,思考 一 简单介绍 我们可以通过如下方式使用定时器 ...

  2. [spring-framework]Spring定时器的配置和使用

    开发中我们常常会做一些定时任务,这些任务有开始时间,并会按一定的周期或规则执行.如此我们在Java程序开发中使用定时器来处理定时任务. <!-- MessageRequestTask类中包含了m ...

  3. java统计 pv uv_统计网址的pv,uv(附带Spring定时器)

    之前做了一个统计商铺的PV,UV值 大体思路:每天将用户的访问信息放到明细表里,然后在第二天的凌晨将这些数据归总 PVUV表 4个字段:主键pk    用户IP(customer_ip)    访问时 ...

  4. linux定时器多次,Spring 定时器执行两次

    Spring错误笔记 Spring定时器执行两次因为导入了两次 关于配置文件如下 对应的类有个定时执行检查的动作,但是动作中的日志每次输出两遍,一开始以为是log4j的输出导致的两条,找了半天没办法还 ...

  5. Spring定时器的使用-多实例下定时重建索引

    2019独角兽企业重金招聘Python工程师标准>>> 前几天接到项目需要定时重建索引的任务,一开始试了试Java自带的Timer,不知道是不是自己对Timer的了解还不够的原因,感 ...

  6. Spring 定时器

    本文向您介绍Spring定时器的两种实现方式,包括Java Timer定时和Quartz定时器,两种Spring定时器的实现方式各有优点,可结合具体项目考虑是否采用. 有两种流行Spring定时器配置 ...

  7. spring定时器(@Scheduled)

    spring定时器需要额外添加下面配置 一.配置文件 xmlns 额外添加下面的内容: xmlns:task="http://www.springframework.org/schema/t ...

  8. Java怎么使用spring定时器_浅析spring定时器的使用

    原生的Java定时器 使用Java.util包下的定时器也很简单,具体代码如下: //设置定时器开始时间 Date time = sdf.parse("2020-10-01 16:40:00 ...

  9. spring 定时器注释_带注释的控制器– Spring Web / Webflux和测试

    spring 定时器注释 Spring Webflux和Spring Web是两个完全不同的Web堆栈. 但是, Spring Webflux继续支持基于注释的编程模型 使用这两个堆栈定义的端点可能看 ...

最新文章

  1. OneShot LiDAR Global Localization:基于单帧激光点云和视觉增强的全局定位方法
  2. iphone怎么投屏到电脑_手机怎么投屏到电脑?这几步轻松学会
  3. centos部署Redis和Java开发(Jedis)
  4. ubuntu创建文件夹快捷方式命令
  5. serialVersionUID的作用以及如何用idea自动生成实体类的serialVersionUID
  6. 使用 XML Schema 定义元素的基本知识--1
  7. 事业单位考试高频考点一:马克思主义基本原理
  8. b h em strong mark
  9. package.json配置简介
  10. 用手机打开word图表位置很乱_干货 | 论文格式调半天?Word攻略帮你统统都搞定...
  11. CPU-显卡-硬盘性能天梯图排行榜源码
  12. 华为鸿蒙系统平板电脑,华为5G鸿蒙系统平板电脑正式入网,搭载八核处理器麒麟9000芯片...
  13. 分享一款免费下载音乐的软件
  14. unity进度条,物品随机掉落
  15. 基于51单片机的脉搏心率心跳血压体温测量检测仿真(仿真+原理图+源码+论文)
  16. Windows程序意外挂掉,但显存依然被占用
  17. Web前端相关面试题
  18. QT - 创建UDP Socket通信
  19. golang+uniapp 开发的一套微信小程序电商系统
  20. 第5次作业+163+张玉洁

热门文章

  1. android中px单位,android中像素单位dp、px、pt、sp的比较
  2. java基础学完就直接学ssm_java基础学习笔记3(SSM基础)
  3. 爬虫+数据分析,制作一个世界疫情人数增长动态柱状竞赛图2
  4. 无边框窗体移动的方法
  5. js long类型精度丢失_浮点数丢失精度
  6. 32位mysql安装包_《MySQL 入门教程》第 02 篇 MySQL 安装
  7. 《基于张量网络的机器学习入门》学习笔记7
  8. 基于jquery的php分页,基于jQuery封装的分页组件
  9. python获取当前服务器ip_Python实现获取域名所用服务器的真实IP
  10. 《爬虫与网络编程基础》学习