更新時間:2020-11-06 15:31:41 來源:動力節(jié)點 瀏覽2420次
springboot框架是為了能夠幫助spring開發(fā)者快速高效的構建一個基于spring框架及spring生態(tài)體系的應用的解決方案,它是對“約定優(yōu)于配置”這個理念下的一個最佳實現(xiàn)方案,因此它是一個服務于框架的框架,服務的范圍是簡化配置文件。
約定優(yōu)于配置指的是什么?
(1),maven目錄:默認打包方式為jar,默認新建好了resources資源文件夾
(2),spring-boot-web-start:包含了webmvc相關的依賴以及內(nèi)嵌了tomcat容器,使得構建一個web應用更加簡單
(3),默認提供了application.properties/yml文件
(4),默認通過spring.profiles.active屬性來決定運行環(huán)境時讀取的配置文件
(5),EnableAutoConfiguration默認對于依賴的start進行自動裝配
SpringBootApplication由哪幾個注解組成,這幾個注解分別表示什么作用?
(1),Configuration:將一個類申明為一個IoC容器配置類,該類中任何標注了 Bean的方法,它的返回值都會作為Bean定義注冊到Spring容器中,方法名默認稱為這個Bean的id
(2),ComPonentScan:默認掃描當前包下的被 Component、 Repository、 Service、 Controller標識的類到IoC容器中。
(3),EnableAutoConfiguration:幫助springboot將所有符合條件的configuration配置加載到springboot創(chuàng)建的IoC容器中。其實這里借助了spring框架提供的一個工具類:SpringFactoriesLoader的支持,以及用到了spring提供的條件注解Conditional
分析:我們發(fā)現(xiàn)它有一個Import注解,那么這個注解是干嘛的呢?
第一:基于普通的Bean或者帶有Configuration注解的Bean進行注入
第二:實現(xiàn)ImportSelector接口進行動態(tài)注入
第三:實現(xiàn)ImportBeanDefinitionRegistrar接口進行動態(tài)注入
springboot自動裝配的實現(xiàn)原理
我理解的自動裝配是:其實EnableAutoConfiguration上有個Import注解,這個注解里面包含了一個實現(xiàn)了ImportSelector的類,在它里面的selectImports方法可以選擇注入需要的Bean,
分析塔源碼可以看到,
第一步:掃描META-INF/spring-autoconfigure-metadata.properties文件,它里面定義了很多的Conditional條件,例如ConditionalOnClass
第二部:掃描META-INF/spring.factories,結(jié)合前面掃描到的進行過濾,原因是很多 Configuration其實是依托于其它的框架來加載的,如果當前classpath下沒有相關的依賴,則意味著這些類沒必要加載,所以通過這種條件過濾可以有效的減少 Configuration類的數(shù)量從而降低啟動時間。
springboot中的spi機制的原理
很多開源框架庫里都直接或間接使用了Java的SPI機制。比如Spring就有類似的SPI機制,通過SpringFactoriesLoader代替JDK中ServiceLoader,通過META-INF/spring.factories文件代替META-INF/service目錄下的描述文件,具體實現(xiàn)步驟不同,但原理都是使用Java的反射機制。META-INF/spring.factories文件,根據(jù)key來加載對應的類到springIoC容器中。
動力節(jié)點Java培訓的SpringBoot學習教程,實現(xiàn)原理剖析SpringBoot可以根據(jù)定義在classpath下的類,自動的給你生成一些Bean,并加載到Spring的 Context中,自動配置充分的利用了Spring 4.0的條件化配置特性,能夠自動配置特定的Spring bean,用來啟動某項特性;有了SpringBoot的自動化配置,我們可以靈活的自定義我們自己的自動配置,當應用需要該功能時,只需要簡單的依賴該jar包即可,同時Spring Boot為我們提供的條件注解,同樣的代碼可以靈活適應各種環(huán)境,讓我們跟著動力節(jié)點的cat老師學習一下吧:
課程學習目錄
1.架構師教程-Spring中的 Import注解是什么
2.架構師教程-Spring中的 Conditional注解是什么
3.架構師教程-SpringBoot是如何實現(xiàn)自動裝配的
4.架構師教程-如何自己實現(xiàn)一個spring-boot-starter(上)
5.架構師教程-如何自己實現(xiàn)一個spring-boot-starter(中)
6.架構師教程-如何自己實現(xiàn)一個spring-boot-starter(下)
7.架構師教程-SpringBoot自動裝配實現(xiàn)流程總結(jié)梳理
以上就是動力節(jié)點java培訓機構的小編針對“Java架構師視頻教程,Springboot框架學習”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。