SpringBoot的自动配置功能可以说是其最引以为傲的功能,下面为其底层实现原理
- 之前用Spring、SpringMVC开发时,自己想要实现某些功能,比如Http解码、视图解析器、文件上传解析器等等,一般做法都是将某个组件注入容器中,也就是说,功能配置的核心就是将功能组件注入到IOC容器中,框架才会帮助我们实现相应的功能
- 那么在SpringBoot实现自动配置的功能时,首先SpringBoot在加载时会自动载入所有开发环境下的自动配置类
xxxAutoConfiguration
- 在不同的开发环境中,会以条件来生效不同的配置类
- 比如
@ConditionOnClass
如果容器中存在某些类那么就自动将某个配置类注入容器,SpringBoot底层多是以这种条件注入的方式来进行自动配置类的加载注入 - 在配置文件中同样会以类似
@ConditionOnMissing
的方式来判断容器中是否已经存在某些组件,也就是说,如果用户已经将自定义的配置注入容器中,那么SpringBoot就会自动识别,以用户的配置为准 - 在类中的属性大多都会绑定
xxxProperties
文件中的值,那么用户在使用时,就可以根据自己的需要,来更改SpringBoot核心配置文件application.properties
中的值以达到更改功能的目的,这其实也就是我们更改配置文件的底层原理,这些配置信息在官网都能找得到官方文档
我们可以在配置文件中加入debug=true
来检查项目运行时哪些自动配置文件的生效(Positive)和不生效(Negative)