srpingboot 初識

CyrusHuang發表於2024-07-05

依賴管理

  1. 父專案(一直網上找)spring-boot-dependencies 決定了當前 springboot 預先配置的所有依賴及版本

      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.4.RELEASE</version>
      </parent>
    
  2. spring-boot-dependencies 裡匯入了很多依賴,並不是所有的都會匯入專案,後面說怎麼根據需要匯入必要的依賴

  3. 修改預設的依賴版本

    <properties>
        ...
        <mysql.version>8.0.21</mysql.version>
        ...
    </properties>
    
    <dependencyManagement>
    	...
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.protobuf</groupId>
                        <artifactId>protobuf-java</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
        ...
    </dependencyManagement>
    

    上面是 springboot 配置的,如果自己專案要修改,兩種方式

    <!-- 方式一:直接修改 dependency 版本 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- 覆蓋版本 -->
        <version>5.1.46</version>
    </dependency>
    
    <!-- 方式二:修改變數,maven 優先原則,會優先使用自己專案的版本號 -->
    <properties>
        ...
        <mysql.version>5.1.46</mysql.version>
        ...
    </properties>
    

    starter

    1. 一個 starter 就是一個場景,這個場景會引入所有相關依賴

    2. 官方 starter 命名為 spring-boot-starter-xxx,非官方的為 xxx-spring-boot-starter

    3. 比如 spring-boot-starter-web 就引入了 web 相關的所有依賴

      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter</artifactId>
              <version>2.3.4.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-json</artifactId>
              <version>2.3.4.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
              <version>2.3.4.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-web</artifactId>
              <version>5.2.9.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-webmvc</artifactId>
              <version>5.2.9.RELEASE</version>
              <scope>compile</scope>
          </dependency>
      </dependencies>
      

    自動配置

    比如 springMVC,要是我們自己配置 springMVC 要配置 DispatcherServlet、檔案上傳、中文亂碼、tomcat 等等

    比如 spring 我們要配置 servlet 監聽器、ioc 容器(@companScan)等

    但是 springboot 就不用我們自己配置了,自動配置好了

    <!-- springboot 支援的所有配置項都在這裡(這裡只是 springboot 的,非官方的在自己的 xxx-autoconfigure中 ) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>2.3.4.RELEASE</version>
        <scope>compile</scope>
    </dependency>
    

    這個裡面的配置非常多,並不是每個都會配置,springboot 會按需進行配置(怎麼自動配置,怎麼按需配置,後面原理說)

    srpingboot  初識