02-依赖管理和自动配置

发布时间 2023-04-01 22:09:40作者: thiszwinter

依赖管理

什么是依赖管理

  1. spring-boot-starter-parent 还有父项目, 声明了开发中常用的依赖的版本号
  2. 并且进行 自动版本仲裁 , 即如果程序员没有指定某个依赖 jar 的版本,则以父项目指
    定的版本为准

修改自动仲裁/默认版本号

e.g. 将 SpringBoot mysql 驱动修改成 5.1.49

starter 场景启动器

start基本介绍

  1. 开发中我们引入了相关场景的 starter,这个场景中所有的相关依赖都引入进来了,比如
    我们做 web 开发引入了,该 starter 将导入与 web 开发相关的所有包

  1. 依赖树 : 可以看到 spring-boot-starter-web ,帮我们引入了 spring-webmvc,spring-web
    开发模块,还引入了 spring-boot-starter-tomcat 场景,spring-boot-starter-json 场景,这些
    场景下面又引入了一大堆相关的包,这些依赖项可以快速启动和运行一个项目,提高开发
    效率.

  2. 所有场景启动器最基本的依赖就是 spring-boot-starter , 前面的依赖树分析可以看到,这个依赖也就是 SpringBoot 自动配置的核心依赖

官方start文档

  1. 在开发中我们经常会用到 spring-boot-starter-xxx ,比如 spring-boot-starter-web,该场
    景是用作 web 开发,也就是说 xxx 是某种开发场景。

  2. 我们只要引入 starter,这个场景的所有常规需要的依赖我们都自动引入

  3. SpringBoot2 支 持 的 所 有 场 景 如 下 :

第三方starter

  • SpringBoot 也支持第三方 starter

  • 第三方 starter 不要从 spring-boot 开始,因为这是官方 spring-boot 保留的命名方式的。
    第三方启动程序通常以项目名称开头。例如,名为 thirdpartyproject 的第三方启动程序项
    目通常被命名为 thirdpartyproject-spring-boot-starter

  • 也就是说:xxx-spring-boot-starter 是第三方为我们提供的简化开发的场景启动器

自动配置

  1. 学习 SSM 整合时,需要配置 Tomcat 、配置 SpringMVC、配置如
    何扫描包、配置字符过滤器、配置视图解析器、文件上传等[如图],非常麻烦。而在
    SpringBoot 中,存在自动配置机制,提高开发效率

  2. 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);
        }
    }

}
  1. 自动配置 : 默 认 扫 描 包 结 构 !!! 官方文档
    默认主程序(使用@SpringBootApplication注解修饰、带有main方法)所在包及其子包下会被扫描。

如何修改默认配置