java触发器的学习

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

      第一步,在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>unix

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

这个任务。orm

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

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

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

似,具体见下表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时触发

相关文章
相关标签/搜索