使用 Spring 實現定時器任務,定時統計彙總

使用Spring 可以很方便的實現定時器任務,我們只需要通過applicationContext.xml 的簡單配置就可已實現,前提是現有一個人實現統計功能的java bean;

以下是具體的實現步驟:

第一步:定義實現了統計功能的bean.

<!-- 1. 業務功能類 負責彙總統計-->
 <bean id="statTaskService" class="com.hisw.business.service.StatTaskService"> 
 </bean>

第二步:配置任務的代理

<!-- 2. 定義任務,配置代理類-->
 <bean id="statTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="statTaskService" />  
     <property name="targetMethod" value="statDays" />  
     <property name="concurrent" value="false" />
 </bean>

第三步:配置觸發器,設置觸發時期

<!-- 3, 配置觸發器,設置觸發 -->
 <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
     <property name="jobDetail" ref="statTask" />  
   <property name="cronExpression" value="0 0/5 * * * ?" /> 
  <!-- <value>0 1 * * * ?</value> -->
 </bean> 

第四步:配置一個調度器,負責調度管理觸發器   調度器只能有一個,觸發器和任務可以有多個

<bean autowire="no"
  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">    <!-- triggers是Spring定時器的特殊屬性 -->
   <list>
    <ref local="cronTrigger" />   
   </list>
  </property>
 </bean>

整體配置文件如下,只列出有用部分:

 

	<!-- 銷售統計彙總定時器 -->
	
	<!-- 1. 業務功能類 負責彙總統計-->
	<bean id="statTaskService" class="com.hisw.business.service.StatTaskService">	
	</bean>
	<!-- 2. 定義任務,配置代理類-->
	<bean id="statTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="statTaskService" />   
	    <property name="targetMethod" value="statDays" />   
	    <property name="concurrent" value="false" /> 
	</bean>
	<!-- 3, 配置觸發器,設置觸發 -->
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">   
	    <property name="jobDetail" ref="statTask" />   
		 <property name="cronExpression" value="0 0/5 * * * ?" />  
		<!-- <value>0 1 * * * ?</value> -->
	</bean>  
	<!-- 4.配置一個調度器用來管理觸發器 調度 --> 
	<bean autowire="no"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">    <!-- triggers是Spring定時器的特殊屬性 -->
			<list>
				<ref local="cronTrigger" />			
				<ref local="crawlerCron1" /> 
			</list>
		</property>
	</bean>

實現任務的javabean 如下:

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
*實現業務功能的bean
*/
public class StatTaskService extends BaseDao{

	public String queryString ="";
	
	public DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
	/**
	 * @author Administrator
	 * 
	 */
	public void statDays(){
		System.out.println("統計任務執行");
	}
	
}


如果初始化錯誤,一般可能因爲配置中cronExpression 配置格式有問題,
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章