依赖管理
-
父项目(一直网上找)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 会按需进行配置(怎么自动配置,怎么按需配置,后面原理说)
-