日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

springboot starter工作原理_98,谈谈SpringBoot的工作原理

發布時間:2025/3/8 javascript 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot starter工作原理_98,谈谈SpringBoot的工作原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對技術的探索,一切源于好奇心,保持好奇心,才能讓人更年輕。

至今,我們已經有了很多創建SpringBoot項目的經驗,比如我們要創建一個支持web開發的項目,我們只需要引入web-starter模塊即可。

那么,SpringBoot為什么這么神奇?引入的依賴變少了,配置文件也不見了,但項目卻可以正常運行。下面我們一起來探究這背后的邏輯:

1,為什么依賴的依賴變少了?SpringBoot是如何管理這些依賴的?

我們分兩個點來看起

1.1 從pom文件出發

首先,是有一個父工程的引用

我們繼續往里面跟蹤,發現父工程又依賴于另一個父工程

繼續跟蹤,發現這是一個pom工程,統一控制版本

定義了一堆第三方jar包的版本

結論:

所有我們使用了SpringBoot之后,由于父工程有對版本的統一控制,所以大部分第三方包,我們無需關注版本,個別沒有納入SpringBoot管理的,才需要設置版本號

1.2 SpringBoot將所有的常見開發功能,分成了一個個場景啟動器(starter),這樣我們需要開發什么功能,就導入什么場景啟動器依賴即可。

比如,我們現在要開發web項目,所以我們導入了spring-boot-starter-web

我們來跟蹤看看,內部也復用一些starter

還有Springweb和SpringMVC,這也就是為什么,我們就可以開發SpringWeb程序的原因

結論:

  • 大家會發現,SpringBoot是通過定義各種各樣的Starter來管理這些依賴的
  • 比如,我們需要開發web的功能,那么引入spring-boot-starter-web
  • 比如,我們需要開發模板頁的功能,那么引入spring-boot-starter-thymeleaf
  • 我們需要整合redis,那么引入spring-boot-starter-data-redis
  • 我們需要整合amqp,實現異步消息通信機制,那么引入spring-boot-starter-amqp
  • 等等,就是這么方便

2,為什么我們不需要配置?

我們來看看SpringBoot的啟動類代碼,除了一個關鍵的注解,其他都是普通的類和main方法定義

那么,我們來觀察下這個注解背后的東西,發現,這個注解是一個復合注解,包含了很多的信息

其他注解都是一個注解的常規配置,所以關鍵看圈中的這兩個

我們來分析第一個關鍵注解:@SpringBootConfiguration

我們可以看到,內部是包含了@Configuration,這是Spring定義配置類的注解

而@Configuration實際上就是一個@Component,表示一個受Spring管理的組件

結論:@SpringBootConfiguration這個注解只是更好區分這是SpringBoot的配置注解,本質還是用了Spring提供的@Configuration注解

我們再來探討下一個注解:@EnableAutoConfiguration

這個注解的作用是告訴SpringBoot開啟自動配置功能,這樣就減少了我們的配置

那么具體是怎么實現自動配置的?

我們先來觀察這個注解背后的內容

所以,又到了分析圈中的兩個注解了

先來分析@AutoConfigurationPackage

觀察其內部實現,內部是采用了@Import,來給容器導入一個Registrar組件

所以,我們繼續往下跟蹤,來看Registrar內部是什么情況?

我們可以跟蹤源碼看看這段是什么信息

結論:

通過源碼跟蹤,我們知道,程序運行到這里,會去加載啟動類所在包下面的所有類

這就是為什么,默認情況下,我們要求定義的類,比如controller,service必須在啟動類的同級目錄或子級目錄的原因

再來分析@Import(AutoConfigurationImportSelector.class)

這個的關鍵是來看AutoConfigurationImportSelector.class內部的細節

在這個類的內部,有一個關鍵的方法,我們可以調試來看看結果

發現默認加載了好多的自動配置類,這些自動配置類,會自動給我們加載每個場景所需的所有組件,并配置好這些組件,這樣就省去了很多的配置

好了,今天就寫到這,祝大家周末愉快,每天都能增值一點點!

有更多的時間去做自己喜歡的事。

總結

以上是生活随笔為你收集整理的springboot starter工作原理_98,谈谈SpringBoot的工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。