zoukankan      html  css  js  c++  java
  • Spring Quartz

    1 引入spiring和quartz相关jar包

      <!-- quartz 的jar -->
        <dependency>
             <groupId>org.quartz-scheduler</groupId>
             <artifactId>quartz</artifactId>
             <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>

    2 编写任务类

    ..略...

    3配置文件

        <!-- 定时任务开关控制器 -->
        <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">  
           <property name="triggers">  
               <list>  
                  <ref bean="TriggerFirst" />
                  <ref bean="TriggerTwo" />
               </list>  
           </property>  
        </bean>  
        
        
        <!-- 执行定时任务时间 -->
        <bean id="TriggerFirst" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
           <property name="jobDetail" ref="triggerFirstDetail"/>  
           <property name="cronExpression" value="0 15 10 ? * *"/> <!--"0 15 10 ? * *" 每天早上10:15触发 "30 * * * * ?" --> 
        </bean>  
        
         <!--此方式合适仅仅需要调用特定类对象的某个方法。通过SimpleTriggerFactoryBean创建job(顾名思义,JobDetail的bean工厂的方法反射类,FactoryBean<JobDetail>的实现类),由它的对象调用我们要执行的类的方法 -->
        <bean id="triggerFirstDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">   
            <property name="targetObject" ref="JobFirst"/>  >    <!-- 具体要执行的类 -->
            <property name="targetMethod" value="jobFirstMethod"/>  <!-- 具体要执行的方法 -->
            <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->  
            <property name="concurrent" value="false"/>
        </bean> 
        
        <!-- 注入bean -->                         
        <bean id="JobFirst" class="com.cn.JobFirst" />
    
        
        
        
        <!-- 执行定时任务时间 -->
        <bean id="TriggerTwo" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
           <property name="jobDetail" ref="triggerTwoDetail"/>  
           <property name="cronExpression" value="0 15 10 ? * FRI"/>  <!-- 每个周五10:15 AM触发一次 -->
        </bean>  
    
        <bean id="triggerTwoDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">   
            <property name="targetObject" ref="JobTwo"/>  <!-- 具体要执行的类 -->
            <property name="targetMethod" value="JobTwoMethod"/>  <!-- 具体要执行的方法 -->
            <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->  
            <property name="concurrent" value="false"/>
        </bean> 
        
        <!-- 注入bean -->
        <bean id="JobTwo" class="com.cn.JobTwo" />
  • 相关阅读:
    [语言基础] 我只想导入目标包中的一个模块,没想到目标包的其他非模块代码也被执行了。。
    [vscode] os.getcwd(),调试和命令行运行的结果不一致
    234. 回文链表
    不生成新数组的迭代器方法:forEach()&every()&some()&reduce()&reduceRight()
    合并数组并对数组排序
    为数组排序:sort()&reverse()
    从数组中间位置添加元素:unshift()方法的有一种运用
    从数组中删除元素:pop()&unshift()方法
    为数组添加元素:push()&unshift()方法
    由已有数组创建新数组:concat()&splice()方法
  • 原文地址:https://www.cnblogs.com/miye/p/9467921.html
Copyright © 2011-2022 走看看