Spring整合 Quartz 以及 Quartz动态任务

一、Quartz内部原理
    https://www.cnblogs.com/zhangchengzhangtuo/p/5705672.html
二、Quartz常用API
   1,Job接口
     需要我自己去实现
   2,JobDetail
     提供一些监听,主要易于扩展
   3,Trigger 触发器
     可以认为是具体的执行方法,具体要做什么事情
   4,Calendar
     记录所有的任务触发点
   5,Scheduler 调度器
      独立的运行容器,所有的任务相关的东西全部放在调度器里面
   6,SchedulerFactory是Spring给我们提供的一个入口

   表达式
   CronExpression 表达式格式如下(有严格的顺序):
   秒  分  时  日  月  周  年
   https://www.cnblogs.com/pipi-changing/p/5697481.html
   https://www.cnblogs.com/linjiqin/archive/2013/07/08/3178452.html
   CronExpression参考了linux的cron,比windows里面的计划任务实际更加详细




三、xml配置方式添加Quartz
  spring对应的配置文件如下:
  <bean id = "xmlTimer" class = "XMLTimer" />
  <bean id="xmlInvoker" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
      <property name="targetObject" ref="xmlTimer"/>
      <property name="targetMethod" value="execute"/>
  </bean>
  <bean id="xmlTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="xmlInvoker"/>
    <property name="cronExpression" value="0/5 * * * * ?"/>
  </bean>
  <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
        <ref bean="xmlTrigger"></ref>
      </list>
    </property>
  </bean>

  对应的class:
  public class XMLTimer{
     public execute(){
        System.out.println("execute....");
     }
  }
四、Annotation方式添加Quartz

   http://jingyemingyue.iteye.com/blog/1202292
   1,xml中引入命名空间
     xmlns:task="http://www.springframework.org/schema/task"
     然后添加<task:annotation-driven/>
   2,java代码
       @Component
       public class AnnotationQuartz {
          //需要注意@Scheduled这个注解,它可配置多个属性:cron\fixedDelay\fixedRate
          @Scheduled(cron="0,10,20,30,40,50 * * * * ?")
          public void test(){
             System.out.println("0.0");
          }
       }


 Spring任务的动态调度:
 可以参考:https://www.cnblogs.com/hehejava/p/4727205.html
 实现思路:
 1,由于SchedulerFactoryBean中管理了所有调度器,我们可以从spring容器中拿到SchedulerFactoryBean

       @Resource(name="scheduler")
       private Scheduler scheduler;
 2,创建任务
    ........

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值