問題:當自己面試或者背誦八股文時,會背到各種各樣的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容器初始化整體流程就是這樣!