哈喽各位同學們大家好呀,新一周的第一天小編為大家分享開發者學院中課程“Spring Boot2.5自動化配置Autoconfig底層原理”幹貨總結哦~Spring Boot 2.5.x開發實戰可是Java中級工程師必備課程;
課程連結以及圖譜位址小編已經為大家指路了,搭配學習效果更佳👇
課程名稱:Spring Boot 2.5.x開發實戰
課程位址:
https://developer.aliyun.com/learning/course/71?spm=a2c6h.21254954.0.0.4e905907uoWZzr圖譜名稱:Alibaba Java 技術圖譜
圖譜位址:
https://developer.aliyun.com/graph/java?spm=a2c6h.21110250.J_5703890090.6.700e3c67EjOBeJSpring Boot2.5自動化配置Autoconfig底層原理
(一)Java Spring Boot 2.5 自動化配置機制解析
1、Java Spring Boot目标
Spring Boot的設計的目标,就是叫靈活式開發,簡化整個Java應用程式的開發過程,首先是自動化的依賴的管理工作,配置相對簡單,依賴解析也是自動化的,容器,包括中心點配置盡量完成,盡量通過少代碼而實作整個Java項目的管理配置工作,這是它的一個初衷,對于提升開發效率簡化配置過程,非常有幫助。

2、Bean配置
因為底層封裝的時候非常隐蔽,不容易知道其中的一些實驗原理,實際為了做一個Java的網站,需要改善了代碼,大量/bean的配置,檔案得修改,十分複雜的,但是現在Spring Boot2.0,這些工作已經都不需要去這麼來做了,越來越簡單。
(二)Spring Boot 2.0自動化 配置機制
1、Spring Boot 2.0自動化配置機制
底層得具體操作過程,自動化配置就是整個稽核的項目會自動完成一個配置的解析、包的加載過程、下載下傳加載過程以及注入過程,甚至包括容器環境的一些配置,最核心的是在2.0以後有個重點SpringBootApplication ,背後是其他幾個注解的一個捆綁體,另外一個觀點是提出了叫非侵入式,但是完全做非侵入式還是比較難,但是有兩種選擇,一通過配置檔案參數配置的方式來完成,二通過代碼的方式來做。
以下是在SpringBoot2.0以後做的一些自動化配置的機制。
- Spring Boot auto configuration
- Spring Boot 自動配置
- 嘗試根據classpath的jar依賴自動配置Spring應用。
- @AutoConfiguration注解 過期
- @Configuration注解
- @EnableAutoConfiguration注解
- @SpringBootApplication 注解 2.0版本新增
- Auto-configuration is non-invasive 非侵入式
- 也可以禁用自動配
2、@SpringBootApplication 注解等于三大注解
上節課所寫的程式裡面,實際底層背後與配置相關的有三大注解:
@EnableAutoConfiguration:enable Spring Boot’s autoconfiguration mechanism
@ComponentScan: enable @Component scan on the package where the application is located (see the best practices)
@Configuration: allow to register extra beans in the context or import additional configuration classes
configuration注解,在早期的使用MVC裡面,Spring架構裡面已經擁有,用來實作自動化配置的加載的過程,可以去設定一些通過類型、配置檔案來做。
ComponentScan可以去做一些元件的掃描,如安全的元件,資料通路層的業務流程的元件,甚至其他一些模型的實體的元件,都可以标記完以後由它來進行掃描,如指定一個包,去特定包下面進行掃描那些元件。
EnableAutoConfiguration在 SpringBoot裡就提供了,主要是告訴目前的程式啟用什麼,啟用自動化配置的一個機制,現在SpringBootApplication注解可以直接來實作,大大簡化了資料配置過程。
3、自動化配置機制核心
•spring-boot-autoconfigure.jar
•spring.factorie
之前講過的項目,在SpringBoot依賴包裡面有autoconfigure依賴包,它裡面實際對整個SpringBoot的加載做了很多擴充,在配置、解析、加載等等一系列過程中的話,埋下點,可以再進行工作的擴充,如在配置剛加載的時候,攔截校驗,配置下載下傳完成以後,可以去修改它配置參數等等一系列工作。
4、@SpringBootApplication 注解
5、@SpringBootApplication注解機制
1.@SpringBootApplication注解= @SpringBootConfiguration+ @EnableAutoConfiguration + @ComponentScan 之和
2.@Configuration 将該注解類标記為應用程式上下文的bean來 源。 3.@EnableAutoConfiguration告訴Spring Boot自動配置添加 bean。
4.通常手動會為Spring MVC應用程式添加@EnableWebMvc,
5.但Spring Boot會在類路徑上看到spring-webmvc時自動添加 它該注解。
6.為Web應用添加并啟用關鍵特性,例如設定DispatcherServlet。
7.@ComponentScan告訴Spring 掃描元件,配置和服務,控制 器
(三)Spring Boot 2.5自動化 配置機制流程
1、Java Spring Boot 2.x 啟動過程
Spring Boot成為啟動過程中,配置這個選項是非常重要,當然也有一些預設參數,顯示配置和預設配置,當它内置的有一個預設的配置清單,加一個starter的一個依賴,是背後有一個預設清單,然後逐漸去把所有的預設的配置,版本号對應版本的包給拉進來。
2、面試題:自動化裝配
@SpringBootApplication=
@EnableAutoConfiguration +
@Configuration
@ComponentScan
本質上還是早期Spring實作的叫配置的一個注解configuration,加上元件掃描等,啟用制造位置,隻告訴目前的程式要啟用一系列預設的預設的政策,有清單要找一下,有可能有攔截的代碼,想辦法給去檢查一下是否執行相關邏輯的擴充代碼。
3、AutoConfigurationPackages
@EnableAutoConfiguration 在裡面擔任的角色是非常重要的,實際是另外一個擴充點,針對SpringBoot的一個擴充點。
- AutoConfigurationPackages.Registrar注冊存儲客 戶端配置包清單的bean,
- 便于以後使用。
- Spring引導在内部使用此清單,例如 在springboot-autoconfigure的資料通路配置類中。
- 可以通過靜态方法AutoConfigurationPackages.get (BeanFactory)通路此清單:
包加載有一個專門的 AutoConfigurationPackages.Registrar管理的一個類型,屬于SpringBoot的一個擴充。
4、ImportSelector
1. 導入選擇器
2. @Import (EnableAutoConfigurationImportSelector.class)
3. 此批注負責引導自動配置機制。
4. EnableAutoConfigurationImportSelector實作 DeferredImportSelector。
5. 這個選擇器實作使用Spring核心 SpringFactoriesLoader.loadFactoryNames(),
6. 它從META-INF / spring.factories加載配置類
(四)Spring Boot 2.0監控自 動化配置Bean
1、監控自動化配置Bean代碼
監控一下整個Bean的注入過程,如下圖所示,
舉例
有些是根本用不到的,隻需要請求路由,請求的處理,然後加上一系列的虛拟化反應的話就可以,看到上面那個機制,它加載了可能上百個Bean,但是實際是沒有必要的。
使用波段的本身,自動化的配置的過程,确實是大大減化了配置工作,提升了開發的效率。