Springboot 的基础使用2(自动配置的原理)

Springboot实现自动配置的原理

        或许有人会有疑问,Spring的配置没写,Springboot的配置也没写,那是怎样实现自动配置的呢?

        在Springboot启动的时候会去springboot的自动配置中去寻找一个 spring.factories的文件,  然后在这个文件中找到Springboot能够整合的所有第三方框架的自动配置,找到之后 ,在每一个配置文件中都有一个条件注解。通过条件注解判断,我们这个配置文件是否生效 。如果条件注解成立,那么才生效 。如果是条件注解不生效 ,那么配置文件也就不会生效。

        源码图解:

                1.进入run方法

                2.再次进入

                3.原来都是静态方法,但是进入这里之后为什么要new一个呢,可能里面有一些操作,进去看看。

 

                4.执行到了这个构造器,进去看看干了啥。

                5.设置初始化话器(看一个构造器的方法在图里面,看源码总结的方法)

                 6.它通过一个getSpringFactoriesInstances方法获取工厂实例,点进去看看

                7.如何获取过程实例

 

                8.如何加载工厂呢,进入loadFactoryNames

 

                9.进入loadSpringFactories看看(发现最终是找到了spring.factories这个文件)

                10.因此,就知道了下一步要去找自动配置的包

                 11.进入spring.factories(由于2.7.4的版本不好讲解就我就换成1.5.2的来更直观点)

 可以看出spring.factories自动装配了很多包,但是问题来了,运行程序时这些都会执行一遍吗?

并不是

                 12.随机进入一个里面看看(原来里面有条件注解,也就是满足了才能生效)

 

         打个比方,就比如去餐馆点菜(运行程序),老板会跟你说菜有没有(判断),有就上(生效),没有就不上(不生效)。

        原理讲了,那么可能会有人问:

        springboot假设已经使能了配置文件 我们也配置了文件,那两者是不是就冲突了呢?(不冲突)

        原因:因为我们的配置文件的放到IOC容器去的对象上也存在条件注解,并判断在IOC容器中是否已经存在。如果存在 ,那么就不会再次配置了。

        以上知识只是本人对Springboot基础的一些见解,如知识点有问题,请联系我修改,之后会更新Springboot基础使用的内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值