中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot2自動配置底層的方法

發布時間:2022-03-22 17:32:04 來源:億速云 閱讀:154 作者:iii 欄目:開發技術

今天小編給大家分享一下SpringBoot2自動配置底層的方法的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1 自動配置底層分析

1.1 自動配置注解解析

@SpringBootApplication注解是SpringBoot的核心注解,他是由以下三個注解總和而成.

@SpringBootConfiguration

該注解底層有一個@Configuration注解,標明當前類是一個配置類

@EnableAutoConfiguration該注解又由以下兩個注解組合而成

  • @AutoConfigurationPackage:底層使用@Import({Registrar.class})向容器中注冊組件,Registrar.class里獲取到主程序所在的包并將包下的所有組件導入進來,這也就間接說明了SpringBoot的默認包掃描規則: 主程序(MainApplication)所在的包及這個包的所有子包都會被掃描

SpringBoot2自動配置底層的方法

  • @Import(AutoConfigurationImportSelector.class):AutoConfigurationImportSelector.class下有一個selectImports方法,方法里面又使用getAutoConfigurationEntry內部的getCandidateConfigurations方法獲取需要注冊的組件都有哪些,getCandidateConfigurations方法里面使用SpringFactoriesLoader.loadFactoryNames內層的loadSpringFactories方法里的getResources(“META-INF/spring.factories”)默認掃描當前系統里面所有jar包META-INF/spring.factories位置下的文件。后面發現spring-boot-autoconfigure-2.3.4.RELEASE.jar包里面也有META-INF/spring.factories文件,文件里面有個EnableAutoConfiguratio配置項寫死了spring-boot一啟動就要給容器中加載的所有配置類。雖然我們127個場景中自動配置啟動的時候默認全部加載所有的xxxxAutoConfiguration,但是最終按照條件裝配規則(@Conditional)按需配置。

SpringBoot2自動配置底層的方法

@ComponentScan 這個注解定義了包掃描的規則

1.2 修改默認配置

??SpringBoot默認會在底層配好所有的組件,但是如果用戶自己配置了以用戶的優先。使用@ConditionalOnMissingBean注解判斷容器中是否存在該組件的話就使用默認的類進行配置

1.3 總結

● SpringBoot先通過xxxxxAutoConfiguration加載所有的自動配置類

● 每個自動配置類按照條件進行生效,默認都會綁定配置文件指定的值,這個值就在xxxxProperties里面拿,xxxProperties和配置文件進行了綁定。

● 生效的配置類就會給容器中裝配很多組件

● 只要容器中有這些組件,相當于這些功能就有了

● 定制化配置

○ 用戶直接自己@Bean替換底層的組件

○ 在創建的配置文件中使用配置項修改默認的配置信息。比如說配置字符編碼格式在HttpEncodingAutoConfiguration里的注解中可以得知

SpringBoot2自動配置底層的方法

xxxxxAutoConfiguration —> 組件 —>

xxxxProperties里面拿值 ----> application.properties

1.4 最佳實踐

??根據上述自動配置原理總結SpringBoot的最佳項目實踐流程

引入場景依賴

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

查看自動配置了哪些組件

  • 默認場景對應的自動配置一般都生效

  • 配置文件中debug=true開啟自動配置報告,其中Positive(生效組件)、Negative(不生效組件)以及會顯示不生效的原因是什么沒有匹配到

修改配置項

  • 參考文檔:SpringBoot可能會用到的所有配置項

  • 按照前面的定制化方式自己分析

組件修改

@Bean、@Component……注解

…………業務流程

2 開發小技巧

2.1 Lombok簡化開發

第一步: 導入依賴(由于starter啟動器中已經配置了版本,于是可以不去再次進行設置)

<dependency> 	
	<groupId>org.projectlombok</groupId> 	
	<artifactId>lombok</artifactId>
</dependency>

第二步: 搜索安裝lombok插件

SpringBoot2自動配置底層的方法

第三步: 使用注解進行開發

JavaBean的注解 使用注解并不會直接自動生成代碼,而是在編譯期間將注解的方法補上。而且如果需要使用多參但不全構造器的話,沒有注解可以完成,需要自己在源碼上手寫

  • @NoArgsConstructor: 無參構造器

  • @AllArgsConstructor: 全參構造器

  • @ToString: 全參數的toString方法

  • @Data: getter和setter方法

SpringBoot2自動配置底層的方法

生成日志

  • 類上加注解@Slf4j

  • log.info方法打印日志

SpringBoot2自動配置底層的方法

2.2 偽熱更新

第一步: 導入依賴

<dependency> 	
	<groupId>org.springframework.boot</groupId> 	
	<artifactId>spring-boot-devtools</artifactId>
	<optional>true</optional>
</dependency>

第二步: 使用熱更新功能,在項目源碼中更新了代碼,不需要重啟服務器,直接使用Ctrl+F9刷新項目信息,就可以使用更新之后的代碼了。靜態頁面的改變使用Ctrl+F9,就是在服務器中直接更新頁面信息,其他的信息改變就相當于使用按鈕重啟項目。如果想要實現不需任何操作就實時更新的話可以使用JRebel,但是缺點就是收費。

2.3 創建Spring Initailizr項目

??這個小技巧就是在使用IDEA的企業版開發的時候,直接創建一個springBoot項目,還可以自定義項目中所需要的技術,創建完成之后就會自動生成SpringBoot項目相應的主程序類、pom.xml文件等

SpringBoot2自動配置底層的方法

右鍵創建項目的時候選擇Spring Initailizr,主要就是勾選自己需要的技術

SpringBoot2自動配置底層的方法

效果:

SpringBoot2自動配置底層的方法

以上就是“SpringBoot2自動配置底層的方法”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

格尔木市| 桃园县| 灵丘县| 中西区| 峨山| 绿春县| 合作市| 洛宁县| 福泉市| 玉树县| 雷州市| 闸北区| 合山市| 龙井市| 资讯| 柳州市| 岫岩| 宁波市| 祥云县| 汪清县| 西平县| 庄浪县| 巴彦县| 望江县| 永川市| 沾益县| 陵水| 响水县| 漯河市| 蓬安县| 三穗县| 加查县| 芷江| 美姑县| 永兴县| 湘阴县| 上饶县| 望江县| 太原市| 军事| 古蔺县|