目錄
一、Spring缺點分析
二、什么是Spring Boot
三、Spring Boot的核心功能
3.1 起步依賴
3.2 自動裝配
一、Spring缺點分析
1. 配置文件和依賴太多了?。?!
spring是一個非常優(yōu)秀的輕量級框架,以IOC(控制反轉(zhuǎn))和AOP(面向切面)為思想內(nèi)核,極大簡化了JAVA企業(yè)級項目的開發(fā)。雖然Spring的組件代碼是輕量級的,但它的配置卻是重量級的。使用Spring進行項目開發(fā)需要在配置文件中寫很多代碼,所有這些配置都代表了開發(fā)時的損耗。
就比如下面這個圖片就反映了進行數(shù)據(jù)源配置的時候配置文件有多繁瑣!?。?/p>
除此之外,Spring項目的依賴管理也是一件耗時耗力的事情。在環(huán)境搭建時,需要分析要導(dǎo)入哪些庫的坐標,而且還需要分析導(dǎo)入與之有依賴關(guān)系的其他庫的坐標,一旦選錯了依賴的版本,隨之而來的不兼容問題就會嚴重阻礙項目的開發(fā)進度。比如Spring5.0以上只能使用Junit4.12以上的版本。?
下圖就很好地詮釋了spring框架開發(fā)的pom文件添加依賴的恐怖之處:
總結(jié)
Spring的缺點:
- 配置過于繁瑣。
- 引入的依賴過多,版本控制復(fù)雜
二、什么是Spring Boot
SpringBoot對Spring的缺點進行改善和優(yōu)化,基于約定大于配置的思想,簡化了Spring的開發(fā),所謂簡化是指簡化了Spring中大量的配置文件和繁瑣的依賴引入。所以SpringBoot是一個服務(wù)于框架的框架,它不是對Spring功能的增強,而是提供了一種快速使用Spring框架的方式。
SpringBoot的優(yōu)點:
- 配置簡單
- 依賴引入簡單
- 提供了一些大型項目的非功能特性,如嵌入式服務(wù)器,安全指標,健康監(jiān)測等。?
三、Spring Boot的核心功能
Spring Boot的核心功能就是起步依賴和自動裝配
3.1 起步依賴
SpringBoot的依賴是基于功能的,而不是普通項目的依賴是基于JAR包的。SpringBoot將完成一個功能所需要的所有坐標打包到一起,并完成了版本適配,我們在使用某功能時只需要引入一個依賴即可。
其原理就是Maven的傳遞依賴,比如說a依賴b,b依賴c,c依賴d,那么如果我們引入了a依賴,剩下的b,c,d的依賴都會被加載進來。
在Spring Boot中,主要通過引入了父依賴,我們點進去看看父依賴引入了什么
我們可以看到里面繼續(xù)引入了一個父依賴,我們ctrl再點擊看看?
Ok,我們可以看到這里聲明了許多了依賴的版本,所以這也是Spring Boot引入依賴時不用聲明的版本的原因,在父依賴里面都已經(jīng)全部定義好了。
3.2 自動裝配
?????SpringBoot項目自動提供最優(yōu)配置,同時可以修改默值滿足特定的要求。
1. 查看注解 @SpringBootApplication 的源碼
@SpringBootConfiguration等同于@Configuration,代表這是一個SpringBoot的配置類,在spring中叫法是Configuration而已。
@Enable Auto Configuration代表開啟自動配置功能。
2. 讓我們+ctrl點擊@Enable Auto Configuration,看看里面有什么
3. 從這里我們只能看出@Import注解導(dǎo)入了AutoConfigurationImportSelector類,現(xiàn)在我們再+ctrl看看AutoConfigurationImportSelector里面寫了什么。
主要就是上面這個getCadicateConfigurations方法,里面調(diào)用了SpringLoaderFactories.loadFactoryNames方法,從調(diào)用改方法返回值是一個configurations集合,就可以猜出該方法主要作用就是獲取所有的配置類。并且在后面有加了一句:
No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.翻譯:在META-INF/spring.factories中沒有找到自動配置類。如果使用的是自定義打包,請確保該文件是正確的。
也就意味著該方法主要在META-INF/spring.factories中找到需要加載的配置類,讀取所有配置類的名稱:
讓我們查看META-INF/spring.factories文件有什么?
上面配置信息就是存在大量以Configuration結(jié)尾的類名稱,這里類就是存有自動配置信息的類,在SpringBootApplication獲取這些類的名稱后再進行加載。
讓我們以ServletWebServerFactoryAutoConfiguration類為例分析源碼
這里又出現(xiàn)了一個自動加載:@EnableConfigurationProperties({ServerProperties.class}),代表的是自動加載服務(wù)器配置類ServerProperties,再讓我們ctrl點進去看看
prefix = "server",代表了Spring Boot配置文件的前綴為server,SpringBoot會將以server前綴開始的屬性自動映射到該類字段中,就比如我們配置網(wǎng)絡(luò)端口的時候設(shè)置server.port = 8080,
如果我們沒有進行配置,則Spring Boot會讀取默認配置信息,而默認配置信息就是放在spring-configuration-metadata.json文件中,如下圖:
該文件也是存放所有的默認配置信息?。?!
總結(jié)文章來源:http://www.zghlxwxcb.cn/news/detail-715116.html
通過起步依賴和自動裝配使得進行開發(fā)時省去了很多麻煩,不用進行版本的管理,以及進行各種配置,這里在SpringBoot中全部通過自動裝配一步到位。文章來源地址http://www.zghlxwxcb.cn/news/detail-715116.html
到了這里,關(guān)于有了Spring為什么還需要SpringBoot呢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!