SpringFramework的核心:IOC容器的實現------BeanDefinition在IoC容器中的註冊
阿新 • • 發佈:2018-10-31
之前分析了關BeanDefinition在IoC容器中的載入和解析的過程。但這些動作完成之後,使用者定義的BeanDefinition資訊已經在IoC容器中建立起了自己的資料結構以及相應的資料表示,但此時這些資料還不能讓IoC容器直接使用,需要在IoC容器中對這些BeanDefinition資料進行註冊。在DefaultListableBeanDefinition中,是通過一個HashMap來持有載入的BeanDefinition的。
/** Map of bean definition objects, keyed by bean name */ private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>(256);
具體的註冊方法我們可以參考DefaultListableBeanDefinition中的registerBeanDefinition方法。
在註冊的過程中需要首先檢查是不是有相同名字的BeanDefinition已經在IoC容器中註冊了,如果有相同名字的BeanDefinition同時又不允許覆蓋,則丟擲異常。
之後則是正常註冊BeanDefinition的過程,把Bean的名字存入到beanDefinitionNames的同時,把beanName作為Map中的Key,把
beanDefinition作為value存入IoC容器持有的beanDefinitionMap中去。
這個就是BeanDefinition的註冊過程,之後我將繼續分析關於依賴注入的原理。