SpringBoot自动配置理解

首先,所有的启动类中都有一个@SpringBootApplication注解:

放置在Springboot启动类上,表明该类是开启Springboot容器的入口,它是一个复合注解。里面包含了包扫描,自动注入,配置注入的功能。

按Ctrl+鼠标左键点击进入此注解,可以看到这个复合注解包含的注解有:

 

其中,有一个@EnableAutoConfiguration注解:

其作用就是帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。

具体机制如下图:

1.首先进入@EnableAutoConfiguration注解,其内部有如下注解

我们可以看到其内部导入了一个AutoConfigurationImportSelector.class的类

点击进入此类,可以发现:通过getAutoConfigurationEntry()获取了所有的实体

而实体从哪获得的呢,就是通过下面的 getCandidateConfigurations()获取候选的配置

而候选的配置从哪获取呢?就是从 getCandidateConfigurations()中的getBeanClassLoader()获取:

 以及

获取标注了 @EnableAutoConfiguration注解下的所有类

接着通过SpringFactoriesLoader.loadFactoryNames()方法加载配置

loadFactoryNames()中又通过loadSpringFactories()加载配置

而loadSpringFactories()又从获取的资源中遍历所有的url

这个 FACTORIES_RESOURCE_LOCATION资源指向的就是META-INF下的spring.factories

也就是AutoConfiguration下的META-INF下的spring.factories:

 

 

它将读取到的资源封装到properties中,最后返回让我们能够使用

 

 总结:

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

         xxxxProperties:封装配置文件中相关属性;

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值