定時任務的使用以及配置
在我們做java開發中,常常需要用到定時任務,就是在某個特定時間段執行你需要的功能,特別是在第三方支付中,在使用者使用你的某些功能如:提現,轉賬等等,會用到T+1來給使用者做交易,這裡就需要定時任務。
T+1:T指的是今天,例如,你今天做了一筆交易,規定T+1到賬,就是說明天會到賬。當然,T+1,所代表的時間必須是工作日,禮拜天,國家規定法定節假日是不能當作T+1的時間。
想要做定時任務,首先需要配置檔案,以及執行具體功能的class類。
在我的maven專案中,是將配置檔案寫在了application.xml 檔案中。
(1)定義執行功能class類所在的位置:id代表其唯一值,class:路徑
<bean id="queryWithdrawOrderJob" class="com.xxx.xxxx.xxxxxx.xxx.WithdrawOrderJob"></bean>
(2)第二步的配置 property 中name的值不可改變
<bean id="orderResultTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">//引用包
<property name="targetObject" ref="queryWithdrawOrderJob"/>//表示引用上一步定義好的功能類class
<property name="concurrent" value="false" />//表示是否同意多執行緒,false為不同意
</bean>
(3)第三步配置 property 中name的值不可改變 來配置你的定時任務在什麼時候執行
<bean id="orderResultTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> //引用包
<property name="cronExpression"> //配置時間
<value>0 30 10 ? * *</value> //代表每天早上十點半,具體怎麼配置可以搜尋定時任務的時間配置 秒 分 時 日 月 年
</property>
</bean>
(4)第四步配置 trigger 觸發這個定時任務
<bean id="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="orderResultTrigger"/>
</list>
</property>
</bean>
最後,執行定時任務時,會進入到上文的WithdrawOrderJob檔案中執行,基於java,首先會執行main方法,把你需要執行的程式碼放到main方法中就可以。