spring的定時調度

項目中要用到一個報表的運算服務器,項目一運行,就會啓動相關的運算方法。

想了一圈,java web項目,spring是個萬金油,什麼都叫由它來管理。一查,還真有這個定時調度的功能。

spring提供兩種觸發器,一個是CronTriggerBean,一個是SimpleTriggerBean。

好懶,長話短說吧。

環境: spring + ibatis,首先配置spring配置文件。寫service層(具體的運算方法就寫在這)。

 

1. CronTriggerBean

	<!-- 定義job -->
	<bean name="mathsJob1"
		class="org.springframework.scheduling.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.scheduling.quartz.CronTriggerBean">
		<!-- 注入需要出發的job -->
		<property name="jobDetail">
			<ref bean="mathsJob1" />
		</property>
		<!-- 觸發的規則,這裏是 每天的凌晨1點觸發 -->
		<property name="cronExpression">
			<value>0 0 1 * * ?</value>
		</property>
	</bean>


 

 

 

2.SimpleTriggerBean

<!-- 定義job -->
	<bean name="mathsJob2"
		class="org.springframework.scheduling.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.scheduling.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>


 

 

具體的觸發規則請參考相關文檔,人懶就不附上了 - -
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章