springboot2.X 在项目启动后执行一段自定义代码
生活随笔
收集整理的這篇文章主要介紹了
springboot2.X 在项目启动后执行一段自定义代码
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
場(chǎng)景:?項(xiàng)目需要在項(xiàng)目啟動(dòng)后從數(shù)據(jù)庫(kù)初始化一些數(shù)據(jù)進(jìn)入redis ,?但是沒(méi)有很適合?的監(jiān)聽(tīng)器去實(shí)現(xiàn) ,?監(jiān)聽(tīng)?老是在dao初始化之前觸發(fā)。
解決方法:自定義類(lèi)實(shí)現(xiàn)?ApplicationRunner?接口?重寫(xiě)?run()?方法
------------------------------------------------------------------------------------------------------------------------------------------
1 /** 2 * @author :CX 3 * @Date :Create in 2018/8/31 11:39 4 * @Effect : 監(jiān)聽(tīng)項(xiàng)目啟動(dòng)成功后, 每次啟動(dòng)給啟動(dòng)序列碼+1(tb_sb_idcounter表) , 5 * 并吧最新的序列碼寫(xiě)入redis 6 */ 7 @Component 8 @Order(10) //執(zhí)行的優(yōu)先級(jí) 9 public class StartIdListener implements ApplicationRunner { 10 Logger logger = Logger.getLogger(this.getClass().getName()); 11 //注入針對(duì)數(shù)據(jù)庫(kù)的dao 12 @Autowired 13 @Qualifier("dao") 14 protected IDao dao; 15 //注入針對(duì)redis的dao 16 @Autowired 17 RedisUtil redisUtil ; 18 19 // 系統(tǒng)啟動(dòng)序列碼在redis中保存的key 20 private String SYSTEM_NUMBER = "bigcustomer:systemNumber_fh23" ; 21 // 本次啓動(dòng) , 通用id 執(zhí)行到幾了, 繼續(xù)執(zhí)行 22 private String FUNIQUEID_NUMBER = "bigcustomer:funiqueid_number" ; 23 /** 24 *@參數(shù) 25 *@返回值 26 *@創(chuàng)建人 cx 27 *@創(chuàng)建時(shí)間 28 *@描述 zaispringboot啟動(dòng)后執(zhí)行 29 */ 30 @Override 31 public void run(ApplicationArguments args) throws Exception { 32 //數(shù)據(jù)庫(kù)啟動(dòng)序列碼 +1 33 logger.info("項(xiàng)目啟動(dòng)成功, 開(kāi)始獲取啟動(dòng)碼!"); 34 try{ 35 dao.update("util-baseIdUpOne"); 36 }catch (Exception e){ 37 throw new RuntimeException("啟動(dòng)失敗,啟動(dòng)序列碼執(zhí)行+1 操作時(shí)異常!請(qǐng)檢查 tb_sb_idcounter表"); 38 } 39 // 獲取最新數(shù)據(jù) 40 TbSbIdcounterModel first = dao.entity(TbSbIdcounterModel.class).first(); 41 if(null == first || null == first.getFH23()){ 42 throw new RuntimeException("啟動(dòng)失敗,啟動(dòng)序列碼為空,請(qǐng)檢查 tb_sb_idcounter表"); 43 } 44 Long fh23 = first.getFH23(); 45 // 保存啟動(dòng)序列碼到redis 46 redisUtil.set(SYSTEM_NUMBER,fh23); 47 // 初始化本次 輪訓(xùn)的編碼 48 redisUtil.set(FUNIQUEID_NUMBER,1); 49 50 51 logger.info("獲取啟動(dòng)碼成功, 本次系統(tǒng)啟動(dòng)碼為:" + fh23); 52 } 53 }?
轉(zhuǎn)載于:https://www.cnblogs.com/cx987514451/p/9590529.html
總結(jié)
以上是生活随笔為你收集整理的springboot2.X 在项目启动后执行一段自定义代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 图片裁切,上传,自动匹配颜色。
- 下一篇: Variational Inferenc