当前位置:编程学习 > JAVA >>

spring的定时调度

项目中要用到一个报表的运算服务器,项目一运行,就会启动相关的运算方法。

想了一圈,java web项目,spring是个万金油,什么都叫由它来管理。一查,还真有这个定时调度的功能。

spring提供两种触发器,一个是CronTriggerBean,一个是SimpleTriggerBean。

好懒,长话短说吧。

环境: spring + ibatis,首先配置spring配置文件。写service层(具体的运算方法就写在这)。

 

1. CronTriggerBean

[html]
<!-- 定义job --> 
<bean name="mathsJob1" 
    class="org.springframework.sche易做图ng.quartz.MethodInvokingJobDetailFactoryBean"> 
    <!-- 注入的service层 --> 
    <property name="targetObject" ref="mathsService" /> 
    <!-- 调用的方法--> www.zzzyk.com
    <property name="targetMethod" value="aotoMathsMethod1" /> 
    <!--concurrent为true,则允许一个QuartzJob并发执行,否则就是顺序执行 --> 
    <property name="concurrent" value="false" /> 
</bean> 
 
<!-- 定义CronTriggerBean触发器 --> 
<bean id="mathsTriggerBean" class="org.springframework.sche易做图ng.quartz.CronTriggerBean"> 
    <!-- 注入需要出发的job --> 
    <property name="jobDetail"> 
        <ref bean="mathsJob1" /> 
    </property> 
    <!-- 触发的规则,这里是 每天的凌晨1点触发 --> 
    <property name="cronExpression"> 
        <value>0 0 1 * * ?</value> 
    </property> 
</bean> 

 <!-- 定义job -->
 <bean name="mathsJob1"
  class="org.springframework.sche易做图ng.quartz.MethodInvokingJobDetailFactoryBean">
  <!-- 注入的service层 -->
  <property name="targetObject" ref="mathsService" />
  <!-- 调用的方法-->
  <property name="targetMethod" value="aotoMathsMethod1" />
  <!--concurrent为true,则允许一个QuartzJob并发执行,否则就是顺序执行 -->
  <property name="concurrent" value="false" />
 </bean>
 
 <!-- 定义CronTriggerBean触发器 -->
 <bean id="mathsTriggerBean" class="org.springframework.sche易做图ng.quartz.CronTriggerBean">
  <!-- 注入需要出发的job -->
  <property name="jobDetail">
   <ref bean="mathsJob1" />
  </property>
  <!-- 触发的规则,这里是 每天的凌晨1点触发 -->
  <property name="cronExpression">
   <value>0 0 1 * * ?</value>
  </property>
 </bean>
 

 

 

2.SimpleTriggerBean

[html]
<!-- 定义job --> 
    <bean name="mathsJob2" 
        class="org.springframework.sche易做图ng.quartz.MethodInvokingJobDetailFactoryBean"> 
        <!-- 注入的service层 --> 
        <property name="targetObject" ref="mathsService" /> 
        <!-- 调用的方法--> 
        <property name="targetMethod" value="aotoMathsMethod2" /> 
        <!--concurrent为true,则允许一个QuartzJob并发执行,否则就是顺序执行 --> 
        <property name="concurrent" value="false" /> 
    </bean> 
     
    <!-- 定义SimpleTriggerBean触发器 -->    
    <bean id="mathsTriggerBean" class="org.springframework.sche易做图ng.quartz.SimpleTriggerBean">       
        <!-- 注入需要出发的job -->        
        <property name="jobDetail">                
            <ref bean="mathsJob2" />           
        </property>            
        <!-- 30s后启动 -->            
        <property name="startDelay" value="30000" />               
        <!-- 10s检查一次 -->               
        <property name="repeatInterval" value="2*60*60*1000" />    
    </bean> 

<!-- 定义job -->
 <bean name="mathsJob2"
  class="org.springframework.sche易做图ng.quartz.MethodInvokingJobDetailFactoryBean">
  <!-- 注入的service层 -->
  <property name="targetObject" ref="mathsService" />
  <!-- 调用的方法-->
  <property name="targetMethod" value="aotoMathsMethod2" />
  <!--concurrent为true,则允许一个QuartzJob并发执行,否则就是顺序执行 -->
  <property name="concurrent" value="false" />
 </bean>
 
 <!-- 定义SimpleTriggerBean触发器 -->  
 <bean id="mathsTriggerBean" class="org.springframework.sche易做图ng.quartz.SimpleTriggerBean">    
  <!-- 注入需要出发的job -->    
  <property name="jobDetail">      
   <ref bean="mathsJob2" />    
  </property>      
  <!-- 30s后启动 -->        
  <property name="startDelay" value="30000" />        
  <!-- 10s检查一次 -->        
  <property name="repeatInterval" value="2*60*60*1000" />   
 </bean>
 

 

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,