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