初识 SpringBoot 的依赖管理和自动配置

一、依赖管理

1、自动版本仲裁机制

Spring Boot 项目默认依赖了一个父项目。父项目中声明了开发中常用的依赖的版本号,称为自动版本仲裁机制。这也就是说默认的依赖都不需要写版本号。

如果需要使用 Spring Boot 默认版本以外的版本,需要在 properties 节点中声明。例如:

<properties>
    <mysql.version>5.1.43mysql.version>
properties>
2、场景启动器

我们在 pom.xml 可以看到很多 spring-boot-starter-* 的依赖,这些称为场景启动器。比如spring-boot-starter-web ,这是 Web 开发的场景启动器。

所有场景启动器的最底层依赖是 spring-boot-starter , 它的 maven 坐标如下:

<dependency>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-starterartifactId>
  <version>2.3.4.RELEASEversion>
  <scope>compilescope>
dependency>

除了 Spring 官方,当然还有第三方协助开发的场景启动器。但是他们的名字与官方的有差异,*-spring-boot-starter ,比如 mybatis-spring-boot-starter

二、自动配置

Spring Boot 会自动加载并配置好某场景的组件。

组件扫描

主程序所在的包及其子包里面的组件都会被默认扫描。如果要改变扫描路径,可以在主程序类 @SpringBootApplication 中添加参数scanBasePackages="packageName"

自动配置原理

首先,Spring Boot 先加载所有自动配置类 xxxAutoConfiguration

然后,每个自动配置类会根据 @Conditional 生效,即按需配置。如果生效,会绑定配置文件的默认值。这个默认值从 xxxProperties 类中取,而 xxxProperties 则与 application.properties 进行了绑定。

因此可以通过修改 application.properties 中所需 key 的value 来进行自定义配置。而另一种自定义配置的方式是编写 @Bean 方法替换掉底层组件,这种方式不太推荐。

最后,生效后的配置类就会给容器中注册其相应功能的组件。

你可能感兴趣的:(SpringBoot,spring,boot)