依赖管理
什么是依赖管理
- spring-boot-starter-parent 还有父项目, 声明了开发中常用的依赖的版本号
- 并且进行 自动版本仲裁 , 即如果程序员没有指定某个依赖 jar 的版本,则以父项目指
定的版本为准
修改自动仲裁/默认版本号
e.g. 将 SpringBoot mysql 驱动修改成 5.1.49
starter 场景启动器
start基本介绍
- 开发中我们引入了相关场景的 starter,这个场景中所有的相关依赖都引入进来了,比如
我们做 web 开发引入了,该 starter 将导入与 web 开发相关的所有包
-
依赖树 : 可以看到 spring-boot-starter-web ,帮我们引入了 spring-webmvc,spring-web
开发模块,还引入了 spring-boot-starter-tomcat 场景,spring-boot-starter-json 场景,这些
场景下面又引入了一大堆相关的包,这些依赖项可以快速启动和运行一个项目,提高开发
效率.
-
所有场景启动器最基本的依赖就是 spring-boot-starter , 前面的依赖树分析可以看到,这个依赖也就是 SpringBoot 自动配置的核心依赖
官方start文档
-
在开发中我们经常会用到 spring-boot-starter-xxx ,比如 spring-boot-starter-web,该场
景是用作 web 开发,也就是说 xxx 是某种开发场景。 -
我们只要引入 starter,这个场景的所有常规需要的依赖我们都自动引入
-
SpringBoot2 支 持 的 所 有 场 景 如 下 :
第三方starter
-
SpringBoot 也支持第三方 starter
-
第三方 starter 不要从 spring-boot 开始,因为这是官方 spring-boot 保留的命名方式的。
第三方启动程序通常以项目名称开头。例如,名为 thirdpartyproject 的第三方启动程序项
目通常被命名为 thirdpartyproject-spring-boot-starter -
也就是说:xxx-spring-boot-starter 是第三方为我们提供的简化开发的场景启动器
自动配置
-
学习 SSM 整合时,需要配置 Tomcat 、配置 SpringMVC、配置如
何扫描包、配置字符过滤器、配置视图解析器、文件上传等[如图],非常麻烦。而在
SpringBoot 中,存在自动配置机制,提高开发效率 -
SpringBoot 自动配置了哪些?
- 自动配置 Tomcat
- 自动配置 SpringMVC
- 自动配置 Web 常用功能: 比如字符过滤器
我们可以通过debug启动类来查看容器中的组件。
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
ConfigurableApplicationContext container = SpringApplication.run(MainApp.class, args);
//查看容器里面的组件
String[] beanDefinitionNames = container.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
System.out.println(beanDefinitionName);
}
}
}
- 自动配置 : 默 认 扫 描 包 结 构 !!! 官方文档
默认主程序(使用@SpringBootApplication注解修饰、带有main方法)所在包及其子包下会被扫描。