使用Spring?Boot的原因解析
為什么要使用Spring Boot?
在使用Spring框架進行開發(fā)的過程中,需要配置很多Spring框架包的依賴,如spring-core、spring-bean、spring-context等,而這些配置通常都是重復添加的,而且需要做很多框架使用及環(huán)境參數(shù)的重復配置,如開啟注解、配置日志等。自動配置:spring boot能夠根據(jù)當前類路徑下的類,jar包來自動配置bean,如添加一個spring-boot-starter-web啟動器就能擁有web的功能,無需其他配置、無代碼生成和XML配置:spring boot配置過程中無代碼生成,也無XML配置就能完成所有的配置工作,這一切都是借助于條件注解完成的,這也是spring4.x的核心功能之一。 還有應用監(jiān)控:spring boot提供一系列端點可以監(jiān)控服務和應用,做健康檢查
Spring Boot是微服務的框架嗎?
Spring Boot是Spring家族的成員,它是一個全新的框架,它的設計目的是盡可能簡單和快速的開發(fā)、運行Spring應用程序,簡化配置。它為開發(fā)者快捷的使用Spring及相關開發(fā)框架提供了便利,但是它并不是微服務的框架,它只是為微服務框架的使用也提供了很好的腳手架。
Spring Boot中的Starter是什么?
Spring Boot中的Starter是一個包含很多依賴描述的集合,只要添加一個Starter,這個Starter里面約定的依賴都會被添加到項目中,例如代碼添加了spring-boot-starter-web,執(zhí)行maven操作就會下載web應用需要的依賴jar。開發(fā)者通過使用這些Starter可以快速的搭建開發(fā)環(huán)境,自動加載所需要的依賴和配置參數(shù)屬性。
使用Spring Boot快速搭建開發(fā)環(huán)境,是不是需要從無到有手動搭建?
如果想快速搭建項目開發(fā)環(huán)境,可以通過Spring Initializr[start.spring.io/]引導快速構建項目。最… Java Initializr[https://start.aliyun.com/],也可以通過它的引導快速構建Java項目。
Spring Boot中@EnableAutoConfiguration注解有什么作用?
@EnableAutoConfiguration注解從字面上理解是開啟自動配置,在@EnableAutoConfiguration注解的定義中使用了@Import注解,使用@Import導入 EnableAutoConfigurationImportSelector.class,作用等同于在Spring的xml文件中使用導入,查看EnableAutoConfigurationImportSelector源碼會發(fā)現(xiàn)它就是用于處理@EnableAutoConfiguration注解的,不過在Spring Boot1.5版本開始被標記為棄用,使用AutoConfigurationImportSelector代替,也就是它的父類,在這個類中將在classpath下jar包中META-INF目錄下搜索spring.factories文件,然后在spring.factories文件中查找以org.springframework.boot.autoconfigure.EnableAutoConfiguration為key的值,值是一個列表,列表中記錄的是需要進行自動化配置的類會被執(zhí)行,例如AopAutoConfiguration會自動配置Aop相關配置,使用JDK代理還是CGLIB代理。
那這個自動化配置是如何觸發(fā)的?
ConfigurationClassPostProcessor類的postProcessBeanFactory方法中調用了ConfigurationClassParser類的parse方法,而ConfigurationClassParser類的parse方法間接調用了AutoConfigurationImportSelector類。這個ConfigurationClassPostProcessor實現(xiàn)了BeanDefinitionRegistryPostProcessor接口,而BeanDefinitionRegistryPostProcessor繼承了BeanFactoryPostProcessor接口,熟悉Spring原理的都知道BeanFactoryPostProcessor接口中的postProcessBeanFactory方法會在Spring容器加載bean的定義文件之后,在bean實例化之前執(zhí)行,而這一步是由SpringApplication的run方法觸發(fā)的,在這個run方法中實現(xiàn)了Spring容器的啟動及初始化。
有些開發(fā)者會在pom.xml中繼承spring-boot-starter-parent,這樣做有什么好處?
通過繼承的方式可以很方便的進行依賴版本管理,使用默認的依賴版本,當然也可以更改這些依賴的版本號。繼承 spring-boot-starter-parent可以獲取以下默認特性: 默認使用Java1.6進行編譯; 默認代碼編碼為UTF-8; 新建項目的pom文件可以省略依賴庫的標簽,例如添加activemq依賴的時候,可以不寫版本號; 恰到好處的資源過濾; 恰到好處的插件配置,如exec插件; 恰到好處的對application.properties和application.yml進行篩選。
Spring Boot中如何實現(xiàn)對不同環(huán)境的屬性配置文件的支持?
Spring-Boot支持不同環(huán)境的屬性配置文件切換,通過創(chuàng)建application-{profile}.properties文件,其中{profile}是具體的環(huán)境標識名稱,例如: application-dev.properties用于開發(fā)環(huán)境,application-test.properties用于測試環(huán)境,application-uat.properties用于uat環(huán)境。如果要想使用application-dev.properties文件,則在application.properties文件中添加spring.profiles.active=dev;如果要想使用application-test.properties文件,則在application.properties文件中添加spring.profiles.active=test。
打包部署都手動修改application.properties中spring.profiles.active的值,這個問題如何解決?
一般的做法是在項目路徑下建立以環(huán)境標識名稱為名的目錄,然后每個目錄下添加各自環(huán)境的application.properties屬性配置,在自動打包部署的時候將對應的application.properties拷貝到classpath下,這樣就實現(xiàn)了配置文件切換。
Spring Boot會自動加載哪些路徑下的application.properties?
Spring Boot支持從以下位置加載application.properties文件:當前目錄下的/config子目錄、當前目錄、classpath下的/config包、classpath根路徑。
如果這四個路徑的application.properties文件中配置了某屬性,最終生效的是哪個文件里的?
最終生效的是當前目錄下的/config子目錄下的application.properties中的配置,覆蓋順序是當前目錄下的/config子目錄覆蓋當前目錄,當前目錄覆蓋classpath下的/config包,classpath下的/config包覆蓋classpath根路徑。
@SpringBootApplication注解有什么作用?
從@SpringBootApplication注解源碼可以看到它具有@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三個注解的作用。@SpringBootConfiguration注解用于標注Spring應用引導類,在應用啟動的時候這個引導類會被執(zhí)行;@EnableAutoConfiguration注解用于根據(jù)依賴自動開啟一些配置;@ComponentScan注解用于配置哪些基礎包或類被自動掃描。
到此這篇關于為什么使用Spring Boot?的文章就介紹到這了,更多相關使用Spring Boot內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring細數(shù)兩種代理模式之靜態(tài)代理和動態(tài)代理概念及使用
代理是一種設計模式,提供了對目標對象另外的訪問方式,即通過代理對象訪問目標對象??梢圆恍薷哪繕藢ο?,對目標對象功能進行拓展。在我們學習Spring的時候就會發(fā)現(xiàn),AOP(面向切面編程)的底層就是代理2023-02-02Java泛型枚舉Annotation接口詳細解讀與Eclipse發(fā)展
這篇文章主要給大家介紹了關于Java中方法使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-08-08Python文件高級操作函數(shù)之文件信息獲取與目錄操作
這篇文章主要介紹了Python文件高級操作函數(shù)之文件信息獲取與目錄操作,在Python中,內(nèi)置了文件(File)對象。在使用文件對象時,首先需要通過內(nèi)置的open()方法創(chuàng)建一個文件對象,然后通過該對象提供的方法進行一些基本文件操作,需要的朋友可以參考下2023-05-05Spring MVC前后端的數(shù)據(jù)傳輸?shù)膶崿F(xiàn)方法
這篇文章主要介紹了Spring MVC前后端的數(shù)據(jù)傳輸?shù)膶崿F(xiàn)方法,需要的朋友可以參考下2017-10-10Java 實戰(zhàn)項目之誠途旅游系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SpringBoot+Vue+maven+Mysql實現(xiàn)一個精美的物流管理系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11詳解@ConfigurationProperties如何裝載到Spring容器中
這篇文章主要為大家詳細介紹了@ConfigurationProperties該如何裝載到Spring容器中,文中的示例代碼講解詳細,需要的小伙伴可以參考一下2023-07-07