最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot起步依賴和自動配置基本介紹

 更新時間:2023年04月19日 11:25:53   作者:一條小咸魚i  
這篇文章主要介紹了SpringBoot起步依賴和自動配置,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1、起步依賴

概念
起步依賴本質(zhì)上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起支持某一功能。

簡單的說,起步依賴就是將具備某種功能的坐標打包到一起,并提供一些默認的功能
例子-搭建Web應(yīng)用
Spring+SpringMVC

我們需要添加許多依賴,還要考慮到不同依賴之間存在版本沖突的問題,一般搭建一個Web項目時需要導(dǎo)入以下依賴:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.1.3.RELEASE</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>5.1.3.RELEASE</version>
</dependency>

SpringBoot

搭建Web項目只需要導(dǎo)入一個起步依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

也就是只需要導(dǎo)入一個名為spring-boot-starter-web 的起步依賴即可,我們點 spring-boot-starter-web 進去可以看到,其實這個起步依賴集成了常用的 web 依賴。

2、自動配置

概念
SpringBoot的自動配置是一個運行時(應(yīng)用程序啟動時)的過程,根據(jù)配置,才決定Spring配置應(yīng)該使用哪個,這個過程是Spring自動完成的。
分析
在SpringBoot中集成了一些常見的容器,或者說是組件,例如我們最常用的Tomcat服務(wù)器,所以在做web項目時,不需要再另外部署到Tomcat上,可以直接運行,這就需要整個項目有一個入口,類似于普通java程序中的main方法(其實就是main方法),這個入口我們一般用一個單獨的類來表示,其中包含一個main方法,這個類通常稱之為SpringBoot的引導(dǎo)類,SpringBoot入門程序的引導(dǎo)類代碼如下:

@SpringBootConfiguration@ComponentScan 注解。前者實質(zhì)為 @Configuration 注解,這個注解相比大家都接觸過,也就是起到聲明這個類為配置類的作用,而后者起到開啟自動掃描組件的作用。

這里需要重點分析的是 @EnableAutoConfiguration 這個注解,這個注解的作用是開啟 Spring Boot 的自動配置功能,我們來分析一下它是如何開啟的,點擊進去可以看到:

可以看到這個注解上邊又有兩個注解,@AutoConfigurationPackage和@Import,@AutoConfigurationPackage是用來管理自動配置類的,可以先不看,先看@Import,這個注解在Spring純注解配置當(dāng)中也使用過,它的作用是導(dǎo)入另外一個配置類,這里導(dǎo)入了一個叫做AutoConfigurationImportSelector的配置類,翻譯過來就是自動配置的導(dǎo)入選擇器,進一步挖它的源代碼:
由于這個類內(nèi)容較多,我們只關(guān)心它實現(xiàn)自動配置的步驟,所以我們根據(jù)內(nèi)部調(diào)用關(guān)系一步一步找:

內(nèi)容太多看不懂不要緊,我們只看關(guān)鍵部分,這是我們找到的關(guān)鍵方法,第一個方法字面意思就是“選擇導(dǎo)入”,它的內(nèi)部又調(diào)用了第二個關(guān)鍵方法,意為“獲取自動配置入口”,在這個getAutoConfigurationEntry()方法中可以明顯看到configurations這樣的關(guān)鍵字眼(通過下面的分析可以確定里面裝的是一些配置類的全限定類名),而且它是一個字符串類型的集合,它來自于getCandidateConfigurations()方法,所以我們在這個類中繼續(xù)往下找這個方法:

挖到這里,可以看到它還在繼續(xù)調(diào)用其他類中的方法,這個時候要還想繼續(xù)往下挖可能就有一定難度了,但是在這個時候我們可以從下方的message中發(fā)現(xiàn)一點貓膩,里面的META-INF/spring.factories好像看起來是某個路徑下的,那么是那個路徑下呢,我們可以盲猜就是當(dāng)前這個類相關(guān)的某個路徑,所以我們來到這個類的最上方看它的全限定包名:

我們可以根據(jù)這個包名在我們導(dǎo)入的Libraies里面去找這個包,然后真的找到了這么一個配置文件:

這個配置文件里面是一些全限定類名,而且每個類名都是以AutoConfiguration結(jié)尾的,這就基本可以確定上面那個configurations里面對應(yīng)的就是這些內(nèi)容,然后繼續(xù)在里面找我們認識且熟悉的:

前面提到的內(nèi)置Tomcat就是在這個里面進行配置的,我們通過這個全限定類名繼續(xù)找到這個類:

我們通過關(guān)鍵注解@EnableConfigurationProperties(ServerProperties.class)繼續(xù)往下挖,找到ServerProperties這個類:

可以看到這個類中定義了很多跟tomcat服務(wù)器有關(guān)的屬性,如port端口、address地址等,上面有一個@ConfigurationProperties注解的屬性中有一個prefix = “server”,這個其實就是對應(yīng)配置文件中的前綴,那么配置文件在哪呢,我們繼續(xù)回到spring.factories同級的目錄下,會發(fā)現(xiàn)如下的一個json文件:

在這個.json文件中,可以找到跟剛才相關(guān)的配置,也就是說,這個json文件里面的值,就是SpringBoot自動配置時幫我們配置的值,如果我們需要更改這些配置,只需要在我們的配置文件中配置一下就行了,就會覆蓋這里的默認配置,而使用我們的自定義配置。

SpringBoot自動配置原理的分析,到這里就基本結(jié)束了,雖然分析得比較淺薄,但是對于初學(xué)者想初步了解SpringBoot自動配置過程來說,這種深度恰到好處。等進一步熟練它的使用后,可以再進一步往底層挖掘,雖然有些太細節(jié)的東西,在項目開發(fā)中基本用不到,但是自己有一定了解的話,在使用過程中碰到問題可以有更清晰的思路去定位并解決。

到此這篇關(guān)于SpringBoot起步依賴和自動配置的文章就介紹到這了,更多相關(guān)SpringBoot起步依賴和自動配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行

    Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行

    這篇文章主要介紹了Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行,在本節(jié)示例中,我們將創(chuàng)建兩個線程,一個是普通線程,向隊列中寫入事件,另外一個是守護線程,清除隊列中的事件,需要的朋友可以參考下
    2014-12-12
  • 簡單了解Java多線程實現(xiàn)的四種方式

    簡單了解Java多線程實現(xiàn)的四種方式

    這篇文章主要介紹了簡單了解Java多線程實現(xiàn)的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Spring?Boot?條件注解詳情

    Spring?Boot?條件注解詳情

    這篇文章主要介紹了Spring?Boot?條件注解詳情,SpringBoot條件注解@Conditional,可用于根據(jù)某個特定的條件來判斷是否需要創(chuàng)建某個特定的Bean,下文更多相關(guān)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • java實現(xiàn)多人聊天室可視化

    java實現(xiàn)多人聊天室可視化

    這篇文章主要為大家詳細介紹了java實現(xiàn)多人聊天室可視化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解如何在Spring?Security中自定義權(quán)限表達式

    詳解如何在Spring?Security中自定義權(quán)限表達式

    這篇文章主要和大家詳細介紹一下如何在Spring?Security中自定義權(quán)限表達式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • NameNode?重啟恢復(fù)數(shù)據(jù)的流程詳解

    NameNode?重啟恢復(fù)數(shù)據(jù)的流程詳解

    這篇文章主要為大家介紹了NameNode?重啟恢復(fù)數(shù)據(jù)的流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 深入理解Java8新特性之接口中的默認方法和靜態(tài)方法

    深入理解Java8新特性之接口中的默認方法和靜態(tài)方法

    從Java8開始,程序允許在接口中包含帶有具體實現(xiàn)的方法,使用default修飾,這類方法就是默認方法。默認方法在接口中可以添加多個,并且Java8提供了很多對應(yīng)的接口默認方法,接下來讓我們一起來看看吧
    2021-11-11
  • Java 獲取當(dāng)前類名和方法名的實現(xiàn)方法

    Java 獲取當(dāng)前類名和方法名的實現(xiàn)方法

    這篇文章主要介紹了 Java 獲取當(dāng)前類名和方法名的實現(xiàn)方法的相關(guān)資料,這里不僅提供了實現(xiàn)方法并比較幾種方法的效率,需要的朋友可以參考下
    2017-07-07
  • ConcurrentHashMap線程安全及實現(xiàn)原理實例解析

    ConcurrentHashMap線程安全及實現(xiàn)原理實例解析

    這篇文章主要介紹了ConcurrentHashMap線程安全及實現(xiàn)原理實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java中的final關(guān)鍵字使用方式

    Java中的final關(guān)鍵字使用方式

    這篇文章主要介紹了Java中的final關(guān)鍵字使用方式,final 關(guān)鍵字用于修飾不可改變內(nèi)容,更多相關(guān)梳理總結(jié),需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06

最新評論

康乐县| 瑞安市| 屯门区| 乌拉特前旗| 舞钢市| 鄢陵县| 钟祥市| 贵溪市| 汝阳县| 桦南县| 平泉县| 区。| 思茅市| 凤翔县| 嵩明县| 保康县| 泰兴市| 乌鲁木齐县| 抚州市| 彰化县| 永胜县| 长沙市| 尚义县| 河池市| 山阴县| 象州县| 遂昌县| 宜良县| 宜阳县| 定边县| 昌邑市| 晴隆县| 桦川县| 汶川县| 南宫市| 宜丰县| 雷山县| 汉阴县| 右玉县| 来安县| 民县|