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