zoukankan      html  css  js  c++  java
  • java触发器的学习

         public class OpenVirtualService {
                public void open(){ //虚机开通
                   //业务逻辑
                }
          }

          第一步,在Spring配置文件中增加本业务类

          <bean id="openVirtualService" class="com.stone.product.virtual.service.OpenVirtualService"/>

          第二步,定义任务。在Spring配置文件中配置代理类MethodInvokingJobDetailFactoryBean,定义任务的详细信息

          <bean id="openVirtualTask" class= "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
             <property name="targetObject" ref = "openVirtualService" />
             <property name="targetMethod" value ="open" />
             <property name="concurrent" value =" false " />
          </bean>

          这个配置告诉Spring,我们的任务是执行id为businessReport的bean中的perform函数。其中参数concurrent告诉Spring,不要并发运行

    这个任务。

          第三步,配置一个触发器。在Spring配置文件中配置触发器类CronTriggerBean 。

          <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 改成 CronTriggerFactoryBean
              <property name="jobDetail" ref="openVirtualTask" />
             <property name="cronExpression" value="0 0 1 1 * ?" />
          </bean>

          触发器将告诉Quartz两件事:在何时触发任务、触发哪个任务。其中属性参数cronExpression为 调度时间,格式和unix上的crontab类

    似,具体见下表1。“0 0 1 1 * ?”表示每月1日凌晨1点运行。其中问号表示忽略该位置(星期)上的值。属性参数jobDetail指向具体的任务

    bean:reportTask 。如果你有多个任务,每个任务的触发时间都不一样,则你可以在此配置多个不同的触发器。

          表1. cronExpression的时间格式
          位置 - 含义-
          1 - 秒(0–59)
          2 - 分(0–59)
          3 - 时(0–23)
          4 - 日(1–31)
          5 - 月(1–12)
          6 - 星期(SUN–SAT or 1–7)
          7 - 年(可选, 1970–2099)


         第四步,配置一个调度器。在Spring配置文件中配置调度器类SchedulerFactoryBean。

         <bean class= "org.springframework.scheduling.quartz.SchedulerFactoryBean">
             <property name="triggers">
                <list>
                   <ref bean="cronTrigger" />
                </list>
             </property>
         </bean>

         该调度器用于管理触发器。只有在调度器中列表出现的触发器才被Quartz系统调度执行。至此,所有的配置已完成,任务已能正常跑了。

         


    附: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:00触发 
    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:00至2:59之间每分钟触发一次 
    0 0/5 14 * * ?---------------每天在下午2:00至2:59之间每5分钟触发一次 
    0 0/5 14,18 * * ?---------------每天在下午2:00至2:59和6:00至6:59之间的每5分钟触发一次 
    0 0-5 14 * * ?---------------每天在下午2:00至2:05之间每分钟触发一次 
    0 10,44 14 ? 3 WED---------------每三月份的星期三在下午2:00和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, 2003, 2004 and 2005年的每个月的最后一个星期五的上午10:15触发 
    0 15 10 ? * 6#3---------------在每个月的第三个星期五的上午10:15触发 
    0 0 12 1/5 * ?---------------从每月的第一天起每过5天的中午12:00时触发 
    0 11 11 11 11 ?---------------在每个11月11日的上午11:11时触发

     

    如有疑问,请留言。

    如觉得有帮助,请点个赞,谢谢!

  • 相关阅读:
    Lua语言基础汇总(9)-- Lua中__index和__newindex实践
    Lua语言基础汇总(8) -- Lua中的元表与元方法
    Lua语言基础汇总(7) -- 协同程序
    Lua语言基础汇总(6)-- 迭代器与泛型for
    Lua语言基础汇总(5) -- 闭包
    【NOIP2005提高组T2】过河-DP+路径压缩
    【NOIP2005提高组T2】过河-DP+路径压缩
    【NOIP2002提高组T2】字串变换-双向BFS或迭代加深搜索
    【NOIP2002提高组T2】字串变换-双向BFS或迭代加深搜索
    【NOIP2001提高组T2】数的划分-DP
  • 原文地址:https://www.cnblogs.com/chendezhen/p/10405138.html
Copyright © 2011-2022 走看看