国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringBoot實現項目啟動時執行代碼

IT那活兒 / 1619人閱讀
SpringBoot實現項目啟動時執行代碼

點擊上方“IT那活兒”,關注后了解更多精彩內容!!

背景

在項目開發過程中,有時候需要在項目啟動時預加載一些資源,例如提前加載某些數據、執行某個方法、初始化SQL腳本、提前實例化一些類等。那么提前加載的方式有哪些呢?接下來一一為大家介紹。

實現方式

實現項目啟動時執行代碼方式有好幾種,總結起來有兩類,分別是Java方式和Spring方式。
1. Java啟動加載方式
包括static代碼塊、構造方法及PostConstruct注解,Spring啟動加載方式包括實現CommandLineRunner接口以及實現ApplicationRunner接口方式。下面分別通過例子來講解。

方式一:static代碼塊

通過static聲明靜態代碼塊,實現在類加載時自動加載,使用方式如圖:

方式二:構造方法

在對象初始化時自動執行,使用方式如圖:

方式三:PostConstruct注解

@PostConstruct是Java提供的一個注解,用來修飾一個非靜態的void()方法,被修飾的方法會在Spring加載Bean時運行,并且只會運行一次,使用方式如圖:
上述三種都是Java實現啟動加載的方式,那么他們之間的加載先后順序如何呢
我們把三種方式放到同一個類中測試下,如圖:
啟動項目測試,可以看到加載的順序依次為:
static代碼塊->構造方法->PostConstruct注解。

2. Spring啟動加載方式

方式一:實現CommandLineRunner接口

CommandLineRunner是SpringBoot提供的接口,實現它需要實現run方法,run方法中就是可以在項目啟動后執行的內容。

方式二:實現ApplicationRunner接口

ApplicationRunner也是SpringBoot提供的接口,實現方式和CommandLineRunner基本一致,區別在于入參不同,一個是String數組,一個是ApplicationArguments對象。
上述兩種是Spring實現啟動加載的方式,那么它兩之間的加載順序如何呢?經過測試,他們的加載順序是由Spring容器加載Bean的順序決定的。
那么,如果想自定義類的加載順序,該如何做呢?我們可以通過@Order注解來實現,該注解的作用是用來定義Spring容器中Bean執行順序的優先級。需要注意的是,這里定義的是Bean的執行優先級,而不是Bean加載順序,實際上Bean的加載順序不受該注解影響。

總結

Spring應用啟動過程中,Spring會掃描所有Bean,并且自動加載并初始化后注入。加載類時會執行static代碼塊,初始化對象時執行構造方法,對象注入后,會調用有@PostConstruct注解的方法。當容器啟動完成后,會根據@Order注解順序依次調用實現了ApplicationRunner和CommandLineRunner接口的run方法。
以上就是實現項目啟動時執行方法的幾種方式,我們可以在項目開發中靈活選用,根據不同場景使用不同方法。

本 文 原 創 來 源:IT那活兒微信公眾號(上海新炬王翦團隊)


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129693.html

相關文章

  • 一個網站的微服務架構實戰(1)docker和 docker-compose

    摘要:文件服務器項目為文章共享社區,少不了的就是一個存儲文章的文件服務器,包括存儲一些圖片之類的靜態資源。例如數據庫的數據文件的配置文件和文件服務器目錄。 前言 這是一次完整的項目實踐,Angular頁面+Springboot接口+MySQL都通過Dockerfile打包成docker鏡像,通過docker-compose做統一編排。目的是實現整個項目產品的輕量級和靈活性,在將各個模塊的鏡像...

    CODING 評論0 收藏0
  • SpringBoot原理深入篇

    摘要:啟動原理和執行原理分析一的啟動原理我們打開,注意看下面兩個依賴我們第一步是繼承了父項目,然后在添加啟動器的依賴,項目就會自動給我們導入關于項目所需要的配置和。 上一篇我們看到,我們很輕松的完成了項目的構建,那么SpringBoot是如何做到的呢,在使用的使用又有哪些通用配置和注意事項呢? 其實SpringBoot給我們做了大量的自動配置功能,我們只需要引入對應的啟動器就可以直接使用,作...

    gotham 評論0 收藏0
  • 貓頭鷹的深夜翻譯:使用SpringBoot和AspectJ實現AOP

    摘要:我們會寫切面來攔截對這些業務類和類的調用。切面定義何時攔截一個方法以及做什么和在一起成為切面連接點當代碼開始執行,并且切點的條件滿足時,通知被調用。 前言 這篇文章會幫助你使用Spring Boot Starter AOP實現AOP。我們會使用AspectJ實現四個不同的通知(advice),并且新建一個自定義的注解來追蹤方法的執行時間。 你將會了解 什么是交叉分割關注點(cross...

    meislzhua 評論0 收藏0
  • SpringBoot熱部署加持

    摘要:概述進行的開發過程中,我們很多時候經常需要重啟服務器才能保證修改的源代碼文件或者一些諸如的配置文件以及一些靜態文件生效,這樣耗時又低效。 showImg(https://segmentfault.com/img/remote/1460000015363888); 概述 進行SpringBoot的Web開發過程中,我們很多時候經常需要重啟Web服務器才能保證修改的 源代碼文件、或者一些...

    ixlei 評論0 收藏0
  • 如何優雅關閉 Spring Boot 應用

    摘要:除了,還有十余種,有的是特定操作,比如轉儲內存日志有的是信息展示,比如顯示應用健康狀態。 showImg(http://ww1.sinaimg.cn/large/006tNc79gy1g5qb2coyfoj30u00k0tan.jpg); 前言 隨著線上應用逐步采用 SpringBoot 構建,SpringBoot應用實例越來多,當線上某個應用需要升級部署時,常常簡單粗暴地使用 kil...

    xiyang 評論0 收藏0
  • SpringBoot RabbitMQ 整合使用

    摘要:可以在地址看到如何使用講解下上面命令行表示控制臺端口號,可以在瀏覽器中通過控制臺來執行的相關操作。同時從控制臺可以看到發送的速率多線程測試性能開了個線程,每個線程發送條消息。 showImg(http://ww2.sinaimg.cn/large/006tNc79ly1g5jjb62t88j30u00gwdi2.jpg); 前提 上次寫了篇文章,《SpringBoot Kafka 整合...

    yuanxin 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<