依賴管理
-
父專案(一直網上找)spring-boot-dependencies 決定了當前 springboot 預先配置的所有依賴及版本
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.4.RELEASE</version> </parent>
-
spring-boot-dependencies 裡匯入了很多依賴,並不是所有的都會匯入專案,後面說怎麼根據需要匯入必要的依賴
-
修改預設的依賴版本
<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
-
一個 starter 就是一個場景,這個場景會引入所有相關依賴
-
官方 starter 命名為 spring-boot-starter-xxx,非官方的為 xxx-spring-boot-starter
-
比如 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 會按需進行配置(怎麼自動配置,怎麼按需配置,後面原理說)
-