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" />

 

posted @ 2018-08-13 14:32  wdmiye  阅读(172)  评论(0编辑  收藏  举报