问题:当自己面试或者背诵八股文时,会背到各种各样的spring底层的东西,自己越看越迷糊。
OS:不知道兄弟们是不是也会这样?如果大家没有说明我太菜了。
原因:就是自己学的框架越来越多,很多框架都把底层的细节给屏蔽了,所以久而久之我们只会使用接口去实现业务逻辑而忽略底层细节的实现。比如IoC容器的初始化?怎么将bean加载到容器中的。
如果刚接触spring,可能会学到如下:
但是久而久之大家就忘了这些东西。其中IOC的初始化就和上述代码相关。
1、从XML中读取配置文件(大家想一想对不对,之前用spring的时候是不是写了很多关于bean的配置文件,还要去读取它。只是现在的springboot已经将bean的读取大多数都集中在注解层面了,所以大家才会忽略很多细节);
2、解析bean标签为BeanDefinition(读取的bean文件,那么交给谁存储呢?就是BeanDefinition)
3、将BeanDefinition注册到BeanDefinitionMap中。(为什么需要这一步呢?因为你存储好了bean,那么在你使用它的时候你怎么才能能找到它呢?你需要将它存储在BeanDefinitionMap中。BeanDefinitionMap是一个map,键值对,最后你可以根据map的key值找到你想要的bean)
4、BeanFactory根据BeanDefinition的信息去初始化和实例化bean。
BeanFactory大家都了解,它是管理bean的容器。
到此,IoC容器初始化整体流程就是这样!