SpringBoot自动配置原理

1. 依赖管理

SpringBoot使用父项目来进行依赖管理 , Maven的父项目通常用来进行依赖管理,只要父项目声明了依赖,子项目引入dependency时,就不用声明版本号了。
这里,我们的项目的父项目如下,这里的父项目几乎声明了所有开发中需要的jar包的版本 :

helloword项目的父项目 : 

    org.springframework.boot
    spring-boot-starter-parent
    2.7.5
  

父项目的父项目 :
  
    org.springframework.boot
    spring-boot-dependencies
    2.7.5
  

如果,我们想更改依赖包的版本,可以在本项目的pom.xml中,声明properties标签,更改这个父项目的值。例如,我在自己的项目中改变了mysql-connector的版本。


    UTF-8
    5.1.43            这里一定要到父项目里去找那个属性名称
 

   
      mysql
      mysql-connector-java
    

2. Starters

Starters是进行依赖包管理的工具,选择一个Starters自动获得依赖包,例如helloworld项目引入了spring-boot-starter-web 。

spring-boot-starter-* 中的*都代表一个场景 ;
引入了这个场景,就代表自动引入了这个场景需要的所有依赖jar包。

spring官方提供的starter,都是以spring-boot-starter开头的,也可以自定义starter 。
第三方的starter 是以这个开头: thirdpartyproject-spring-boot-starter

3.自动配置 :

3.1 自动配置Tomcat

starter-web里配置了Tomcat的依赖包 ;
自动配置Tomcat 。

3.2 自动配置SpringMVC

starter-web里配置了SpringMVC的依赖包 ;
自动配置SpringMVC。

3.3 默认的包结构 :

主程序所在包及其子包所有的组件(例如Controller)都会被扫描进来 ;
无需再做以前的包配置 。

3.4 配置默认值:

springboot给各种配置都给了默认值,默认值都映射到MultipartProperties类上的。
配置文件的值都会绑定到某个类上,这个类会在容器中初始化。

你可能感兴趣的:(SpringBoot自动配置原理)