91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot的底層原理是什么

發布時間:2022-02-18 16:56:56 來源:億速云 閱讀:223 作者:iii 欄目:開發技術

這篇文章主要講解了“Spring Boot的底層原理是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring Boot的底層原理是什么”吧!

Spring Boot的底層原理是什么

1.基于你對springboot的理解描述一下什么是springboot

它是一個服務于spring框架的框架,能夠簡化配置文件,快速構建web應用,內置tomcat,無需打包部署,直接運行。

2.約定優于配置指的是什么?

maven 的目錄結構a) 默認有 resources 文件夾存放配置文件b) 默認打包方式為 jarspring-boot-starter-web 中默認包含 spring mvc 相關依賴以及內置的 tomcat 容器,使得構建一個 web 應用更加簡單默認提供 application.properties/yml 文件默認通過 spring.profiles.active 屬性來決定運行環境時讀取的配置文件EnableAutoConfiguration 默認對于依賴的 starter 進行自動

3.@SpringBootApplication由哪幾個注解組成,這幾個注解分別表示什么作用

SpringBootApplication 本質上是由 3 個注解組成,分別是

@Configuration@EnableAutoConfiguration@ComponentScan@Configuration:在啟動類里面標注了@Configuration,意味著它其實也是一個 IoC容器的配置類

@EnableAutoConfiguration:springboot 應用把所有符合條件的@Configuration 配置都加載到當前 SpringBoot 創建并使用的 IoC 容器中。

@ComponentScan:ComponentScan 默認會掃描當前 package 下的的所有加了@Component 、@Repository、@Service、@Controller的類到 IoC 容器中;

4.springboot自動裝配的實現原理

如果是之前的spring中使用redis需要在xml定義bean,現在只需要依賴一個spring-boot-starter-data-redis的jar包,jar中定義了RedisConfiguration,當啟動的時候spring會自動裝載RedisConfiguration,那spring是如何知道配置類在哪里的呢?RedisConfiguration類的路徑放在了classpath*META-INF/spring.factories的文件中,spring會加載這個文件中配置的configuration

(1)SpringApplication.run(AppConfig.class,args);執行流程中有refreshContext(context);這句話.

(2)refreshContext(context);內部會解析我們的配置類上的標簽.實現自動裝配功能的注解@EnableAutoConfiguration

(3)會解析@EnableAutoConfiguration這個注解里面的@Import引入的配置類.AutoConfigurationImportSelector

(4)AutoConfigurationImportSelector這個類中有這個方法.SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());

(5)SpringFactoriesLoader.loadFactoryNames的作用就是讀取jar包中的/項目中的META-INF/spring.factories文件.

(6)spring.factories配置了要自動裝配的Configuration類

5.spring中的spi機制的原理是什么?

SPI的全名為Service Provider Interface,為某個接口尋找服務實現的機制。當服務的提供者,提供了服務接口的一種實現之后,在jar包的META-INF/services/目錄里同時創建一個以服務接口命名的文件。該文件里就是實現該服務接口的具體實現類。而當外部程序裝配這個模塊的時候,就能通過該jar包META-INF/services/里的配置文件找到具體的實現類名,并裝載實例化,完成模塊的注入。通過這個約定,就不需要把服務放在代碼中了,通過模塊被裝配的時候就可以發現服務類了。

在springboot的自動裝配過程中,最終會加載META-INF/spring.factories文件,而加載的過程是由SpringFactoriesLoader加載的。從CLASSPATH下的每個Jar包中搜尋所有META-INF/spring.factories配置文件,然后將解析properties文件,找到指定名稱的配置后返回。需要注意的是,其實這里不僅僅是會去ClassPath路徑下查找,會掃描所有路徑下的Jar包,只不過這個文件只會在Classpath下的jar包中。

通過spi技術可以自定義starter,在自定義的配置文件META-INF/spring.factories中加入實現類,依賴這個starter的項目就會掃描jar包下的配置,找到實現類進行裝載實例化

感謝各位的閱讀,以上就是“Spring Boot的底層原理是什么”的內容了,經過本文的學習后,相信大家對Spring Boot的底層原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岐山县| 吉水县| 玛沁县| 宜宾市| 蒙自县| 杭锦后旗| 习水县| 和硕县| 汾阳市| 南木林县| 陵水| 洛隆县| 中山市| 丰顺县| 武汉市| 梅河口市| 尚义县| 从江县| 老河口市| 河北区| 广安市| 湘西| 鹤庆县| 珲春市| 万州区| 澄城县| 德州市| 中西区| 濮阳县| 奈曼旗| 泰顺县| 高要市| 临武县| 岳阳市| 土默特左旗| 沂南县| 宁安市| 漠河县| 太仓市| 龙胜| 广安市|