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