SpringBoot 依赖管理和自动配置😊
依赖管理💕
什么是依赖管理
- spring-boot-starter-parent 还有父项目, 声明了开发中常用的依赖的版本号
- 并且进行自动版本仲裁, 即如果程序员没有指定某个依赖jar 的版本,则以父项目指定的版本为准
修改自动仲裁/默认版本号
- 需求说明: 将SpringBoot mysql 驱动修改成5.1.49
- 查看spring-boot-dependencies.pom 里面规定当前依赖的版本对应的key , 这里是 mysql.version
- 修改quickstart\pom.xml 重写配置, 当更新Maven 时,就依赖到新的 mysql 驱动.
<!--我们自己指定mysql/驱动版本- 修改版本仲裁--> <!-- 1. 方式1:显示的导入mysql依赖, 并明确的指定<version> --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <!-- 2. 方式2.在自己的pom.xml文件中, 在<properties> 中指定mysql的key 如: <properties> <mysql.version>5.1.49</mysql.version> </properties> 3. 为什么可以达到修改版本仲裁: 根据依赖就近优先原则. -->
版本仲裁就是比如他里面有个父项目,配置了大多数可能需要的jar,默认指定了每一个jar版本。如果本工程配置了就采用本工程的配置,没有就找到父项目的配置。
starter 场景启动器💕
starter 场景启动器基本介绍
- 开发中我们引入了相关场景的starter,这个场景中所有的相关依赖都引入进来了,比如我们做web 开发引入了,该starter 将导入与web 开发相关的所有包
<!--导入web项目场景启动器: 会自动导入和web开发相关的所有依赖[库/jar],非常方便--> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
依赖树: 可以看到spring-boot-starter-web ,帮我们引入了spring-webmvc,spring-web开发模块,还引入了spring-boot-starter-tomcat 场景,spring-boot-starter-json 场景,这些场景下面又引入了一大堆相关的包,这些依赖项可以快速启动和运行一个项目,提高开发效率.
- 所有场景启动器最基本的依赖就是spring-boot-starter , 前面的依赖树分析可以看到,这个依赖也就是SpringBoot 自动配置的核心依赖
官方提供的starter
地址:https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
介绍
在开发中我们经常会用到spring-boot-starter-xxx ,比如spring-boot-starter-web,该场景是用作web 开发,也就是说xxx 是某种开发场景。
我们只要引入starter,这个场景的所有常规需要的依赖我们都自动引入。
SpringBoot2 支持的所有场景如下:
https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
第三方starter
SpringBoot 也支持第三方starter。
第三方starter 不要从spring-boot 开始,因为这是官方spring-boot 保留的命名方式的。第三方启动程序通常以项目名称开头。例如,名为thirdpartyproject 的第三方启动程序项目通常被命名为thirdpartyproject-spring-boot-starter。
也就是说:xxx-spring-boot-starter 是第三方为我们提供的简化开发的场景启动器。