系統定時器
阿新 • • 發佈:2018-11-14
1.在dispatcher.xml或者Spring-mvc.xml檔案中加上
<bean id="TaskTimer" class="com.scheduler.util.TimedTaskListener"></bean>作用是對類進行裝載
2.建立定時任務類:
public class TimedTaskListener extends TimerTask implements ApplicationListener<ContextRefreshedEvent> { private static Date polling_start_time = null; //輪詢開始時間 private static Long polling_interval_time = 0L; //輪詢間隔時間 private static SimpleDateFormat yMd = new SimpleDateFormat("yyyy-MM-dd"); private static SimpleDateFormat yMdHms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static AccountService accountService; private static UserDataCatalogTableService userDataCatalogTableService; private static LicenseService licenseService;//許可證訪問 private String licensePath = getClass().getResource("/").getFile().toString()+ Messages.getString("license_file_path")+"/valid.license"; private String licenseLogPath = getClass().getResource("/").getFile().toString()+"licenselog.txt"; //需要執行的邏輯程式碼,當spring容器初始化完成後就會執行該方法。 @Override public void onApplicationEvent(ContextRefreshedEvent event) { accountService = event.getApplicationContext().getBean(AccountService.class); userDataCatalogTableService = event.getApplicationContext().getBean(UserDataCatalogTableService.class); licenseService = event.getApplicationContext().getBean(LicenseService.class); //啟動的時候先判斷一次license是否過期 if(Constant.LICENSE_IS_NEED.equals(Constant.LICENSE_YES)) {//判斷是否需要處理 //先判斷是否是第一次啟動,如果是則先建立license licenseService.licenseCreateByFirst(licensePath,licenseLogPath); licenseService.pollLicense(licensePath, licenseLogPath);//判斷license } try { //輪詢開始時間初始化 polling_start_time = yMdHms.parse(yMd.format(new Date())+" "+Messages.getString("polling_start_time")); if(polling_start_time.getTime() < new Date().getTime()){ //如果輪詢開始時間小於專案啟動時間 polling_start_time = TimeHelper.dateAddDay(polling_start_time,1);//則將輪詢時間推遲一天 } polling_interval_time = Long.parseLong(Messages.getString("polling_interval_time"));//輪詢間隔時間 } catch (ParseException e) { e.printStackTrace(); } //定時器執行 new Timer().schedule(new TimedTaskListener(),polling_start_time,polling_interval_time); } @Override public void run() { System.out.println("輪詢處理,當前時間為:"+yMdHms.format(new Date()).toString()); accountService.checkAndDealAllUserDeadline(); //檢查並處理所有過期使用者 userDataCatalogTableService.checkAndDealUserTableDeadline();//檢查並處理所有過期表 } }