SpringBoot基礎回顧-7

## 2. SpringBoot原理深刻及源碼剖析mysql

​       

傳統的Spring框架實現一個Web服務,須要導入各類依賴JAR包,而後編寫對應的XML配置文件等,相較而言,Spring Boot顯得更加方便、快捷和高效。那麼,Spring Boot究竟如何作到這些的呢?web

接下來分別針對Spring Boot框架的依賴管理、自動配置和執行流程進行深刻分析spring

### 2.1 依賴管理sql

​      問題:(1)爲何導入dependency時不須要指定版本?數據庫

​       

在Spring Boot入門程序中,項目pom.xml文件有兩個核心依賴,分別是spring-boot-starter-parent和spring-boot-starter-web,關於這兩個依賴的相關介紹具體以下:apache

**1.spring-boot-starter-parent依賴**json

在chapter01項目中的pom.xml文件中找到spring-boot-starter-parent依賴,示例代碼以下:tomcat

```xml服務器

<!-- Spring Boot父項目依賴管理 -->session

      <parent>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-parent<11./artifactId>

              <version>2.2.2.RELEASE</version>

              <relativePath/>

<!-- lookup parent from repository -->

      </parent>

```

​       

上述代碼中,將spring-boot-starter-parent依賴做爲Spring Boot項目的統一父項目依賴管理,並將項目版本號統一爲2.2.2.RELEASE,該版本號根據實際開發需求是能夠修改的   

​       

使用「Ctrl+鼠標左鍵」進入並查看spring-boot-starter-parent底層源文件,發現spring-boot-starter-parent的底層有一個父依賴spring-boot-dependencies,核心代碼具體以下 

```xml

<parent>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-dependencies</artifactId>

      <version>2.2.2.RELEASE</version>

      <relativePath>../../spring-boot-dependencies</relativePath>

</parent>

```

繼續查看spring-boot-dependencies底層源文件,核心代碼具體以下:

```xml

<properties>

<activemq.version>5.15.11</activemq.version>

  ...

<solr.version>8.2.0</solr.version>

<mysql.version>8.0.18</mysql.version>

<kafka.version>2.3.1</kafka.version>

<spring-amqp.version>2.2.2.RELEASE</spring-amqp.version>

<spring-restdocs.version>2.0.4.RELEASE</spring-restdocs.version>

<spring-retry.version>1.2.4.RELEASE</spring-retry.version>

<spring-security.version>5.2.1.RELEASE</spring-security.version>

<spring-session-bom.version>Corn-RELEASE</spring-session-bom.version>

<spring-ws.version>3.0.8.RELEASE</spring-ws.version>

<sqlite-jdbc.version>3.28.0</sqlite-jdbc.version>

<sun-mail.version>${jakarta-mail.version}</sun-mail.version>

<tomcat.version>9.0.29</tomcat.version>

<thymeleaf.version>3.0.11.RELEASE</thymeleaf.version>

<thymeleaf-extras-data-attribute.version>2.0.1</thymeleaf-extras-data-attribute.version>

              ...

</properties>

```

  從spring-boot-dependencies底層源文件能夠看出,該文件經過<properties>標籤對一些經常使用技術框架的依賴文件進行了統一版本號管理,例如activemq、spring、tomcat等,都有與Spring Boot 2.2.2版本相匹配的版本,這也是pom.xml引入依賴文件不須要標註依賴文件版本號的緣由。

須要說明的是,若是pom.xml引入的依賴文件不是 spring-boot-starter-parent管理的,那麼在pom.xml引入依賴文件時,須要使用<version>標籤指定依賴文件的版本號。

(2)問題2: spring-boot-starter-parent父依賴啓動器的主要做用是進行版本統一管理,那麼項目運行依賴的JAR包是從何而來的?

**2.

spring-boot-starter-web依賴**

​ 

查看spring-boot-starter-web依賴文件源碼,核心代碼具體以下

```xml

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

<version>2.2.2.RELEASE</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-json</artifactId>

<version>2.2.2.RELEASE</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-tomcat</artifactId>

<version>2.2.2.RELEASE</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-validation</artifactId>

<version>2.2.2.RELEASE</version>

<scope>compile</scope>

<exclusions>

<exclusion>

<artifactId>tomcat-embed-el</artifactId>

<groupId>org.apache.tomcat.embed</groupId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>5.2.2.RELEASE</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>5.2.2.RELEASE</version>

<scope>compile</scope>

</dependency>

</dependencies>

```

從上述代碼能夠發現,spring-boot-starter-web依賴啓動器的主要做用是提供Web開發場景所需的底層全部依賴

正是如此,在pom.xml中引入spring-boot-starter-web依賴啓動器時,就能夠實現Web場景開發,而不須要額外導入Tomcat服務器以及其餘Web依賴文件等。固然,這些引入的依賴文件的版本號仍是由spring-boot-starter-parent父依賴進行的統一管理。

​       

Spring Boot除了提供有上述介紹的Web依賴啓動器外,還提供了其餘許多開發場景的相關依賴,咱們能夠打開Spring Boot官方文檔,搜索「Starters」關鍵字查詢場景依賴啓動器 

列出了Spring Boot官方提供的部分場景依賴啓動器,這些依賴啓動器適用於不一樣的場景開發,使用時只須要在pox.xml文件中導入對應的依賴啓動器便可。

須要說明的是,Spring Boot官方並非針對全部場景開發的技術框架都提供了場景啓動器,例如數據庫操做框架MyBatis、阿里巴巴的Druid數據源等,Spring Boot官方就沒有提供對應的依賴啓動器。爲了充分利用Spring Boot框架的優點,在Spring Boot官方沒有整合這些技術框架的狀況下,MyBatis、Druid等技術框架所在的開發團隊主動與Spring Boot框架進行了整合,實現了各自的依賴啓動器,例如mybatis-spring-boot-starter、druid-spring-boot-starter等。咱們在pom.xml文件中引入這些第三方的依賴啓動器時,切記要配置對應的版本號  。

***上了拉勾教育的《Java工程師高薪訓練營》,作一下筆記。但願拉勾能給我推到想去的公司,目標:字節!!***

相關文章
相關標籤/搜索