自动配置原理再理解

源码剖析:
在这里插入图片描述
进行完上图的流程就完成了将自动配置类装配到Properties文件中

配置文件和自动装配的关系

配置文件中的配置参数在其相关类的配置类中都能找到其对应的配置属性,如下图

所有在配置文件中能配置的属性都是xxxProperties类中封装者;配置文件能配置扫描就可以参照某个功能对应的这个属性类。
在这里插入图片描述
这就说明在我们配置文件中能配置的东西,都存在一个固有的规律:能配置的参数的属性都存在一个xxxProperties文件中,它又会被xxxAutoConfiguration(自动配置类)大量装配,我们知道在xxxAutoConfiguration中会自动装配一些默认值,而xxxAutoConfiguration又绑定了xxxProperties文件,而这个xxxProperties文件又与我们的配置文件绑定,而配置文件都是我们自定义的配置的一些参数(即可以修改xxxAutoConfiguration中配置的默认值,也可以自己配置一些参数),这就是自定义配置。

一句话总结:
根据当前不同的条件判断,决定这个配置类是否生效!
一旦这个配置类生效的;这个配置类就会给容器中添加各种组件;这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;

这就是自动装配的原理!

精髓:

  • 1、SpringBoot启动会加载大量的自动配置类
  • 2、我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
  • 3、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在在其中,我们就不需要再手动配置了)
  • 4、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们只需要在配置文件中指定这些属性的值即可;

xxxxAutoConfigurartion: 自动配置类;给容器中添加组件
xxxxProperties: 封装配置文件中相关属性;这个就是通过配置文件配合(.yaml或者.properties等等)

@Conditional

了解完自动装配的原理后,我们来关注一个细节问题,自动配置类必须在一定的条件下才能生效;@Conditional派生注解(Spring注解版原生的@Conditional作用)
作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效;

在这里插入图片描述

那么多的自动配置类,必须在一定的条件下才能生效;也就是说,我们加载了这么多的配置类,但不是所有的都生效了。
我们怎么知道哪些自动配置类生效;我们可以通过启用debug=true属性;来让控制台打印自动配置报告,这样我们就可以很方便的知道哪些自动配置类生效;

#开启sprinfboot 的调试类
debug: true
名称 作用
Positive matches 自动配置类启用的:正匹配
Negative matches 没有启动,没有匹配成功的自动配置类:负匹配
Unconditional classes 没有条件的类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看源码的流程

如果我们在配置文件中配置的参数我们不知道是什么意思,我们可以去查看api当然我们也可以去查看源码:我们这里说一说查看源码的流程

在这里插入图片描述

Supongo que te gusta

Origin blog.csdn.net/weixin_44742328/article/details/119278601
Recomendado
Clasificación