實現方式一 註解配置時間的方式
簡述:首先開啓spring的scheduler,需要在xml中配置,然後就是讓spring管理一個類的實例,在該類的方法中指定cron時間表達式即可。
1. application.xml開啓spring scheduler
<task:scheduler id="scheduler" pool-size="5"/>
<task:executor id="executor" pool-size="5"/>
<!--開啓註解使用方式-->
<task:annotation-driven executor="executor" scheduler="scheduler"/>
2. 託管任務類給spring
2.1 任務類上增加@Component
註解,託管給spring
@Component
2.2 在任務類上指定任務內容的時間表達式(也就是在任務方法上寫@Scheduled(cron=........)
)
@Scheduled(cron = "0 44 23 * * ?")
3. 完成
實現方式二 在配置文件中配置時間的方式
簡述:方式一存在的一個缺點就是,通過@Scheduled註解寫入的時間表達式是硬編碼到類中的,如果我們想要以配置的方式動態傳入到它裏面就會很麻煩,而直接使用‘在xml中配置時間表達式’的方法就簡單很多了。
核心思路就是在xml中開啓scheduler並指定時間表達式變量,而該變量的值記錄在一個properties中,通過
PropertyPlaceholderConfigurer類的加載方式讀取配置信息。
1. 創建任務類實例
<bean id="job" class="com.tdt.auth.client.cms.scheduler.PmsScheduler" />
2. 開啓spring scheduler並指定任務
<!--初始化一個scheduler-->
<task:scheduler id="scheduler" pool-size="5"/>
<!--<task:executor id="executor" pool-size="5"/>-->
<!-給scheduler指定任務-->
<task:scheduled-tasks scheduler="scheduler" >
<task:scheduled ref="job" method="updatePermissions" cron="${auto_update_time}"/>
</task:scheduled-tasks>
3. 完成
異步
對於異步的使用可以參考這篇文章,寫的很不錯:
cnblogs.com/technology-huangyan/p/9948434.html