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

資訊專欄INFORMATION COLUMN

SpringBoot實現(xiàn)項目啟動時執(zhí)行代碼

IT那活兒 / 1602人閱讀
SpringBoot實現(xiàn)項目啟動時執(zhí)行代碼

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多精彩內(nèi)容!!

背景

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

實現(xiàn)方式

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

方式一:static代碼塊

通過static聲明靜態(tài)代碼塊,實現(xiàn)在類加載時自動加載,使用方式如圖:

方式二:構(gòu)造方法

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

方式三:PostConstruct注解

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

2. Spring啟動加載方式

方式一:實現(xiàn)CommandLineRunner接口

CommandLineRunner是SpringBoot提供的接口,實現(xiàn)它需要實現(xiàn)run方法,run方法中就是可以在項目啟動后執(zhí)行的內(nèi)容。

方式二:實現(xiàn)ApplicationRunner接口

ApplicationRunner也是SpringBoot提供的接口,實現(xiàn)方式和CommandLineRunner基本一致,區(qū)別在于入?yún)⒉煌粋€是String數(shù)組,一個是ApplicationArguments對象。
上述兩種是Spring實現(xiàn)啟動加載的方式,那么它兩之間的加載順序如何呢?經(jīng)過測試,他們的加載順序是由Spring容器加載Bean的順序決定的。
那么,如果想自定義類的加載順序,該如何做呢?我們可以通過@Order注解來實現(xiàn),該注解的作用是用來定義Spring容器中Bean執(zhí)行順序的優(yōu)先級。需要注意的是,這里定義的是Bean的執(zhí)行優(yōu)先級,而不是Bean加載順序,實際上Bean的加載順序不受該注解影響。

總結(jié)

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

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


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/129693.html

相關(guān)文章

  • 一個網(wǎng)站的微服務(wù)架構(gòu)實戰(zhàn)(1)docker和 docker-compose

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

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

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

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

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

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

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

    ixlei 評論0 收藏0
  • 如何優(yōu)雅關(guān)閉 Spring Boot 應(yīng)用

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

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

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

    yuanxin 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

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