1. 程式人生 > >SpringFramework的核心:IOC容器的實現------BeanDefinition在IoC容器中的註冊

SpringFramework的核心:IOC容器的實現------BeanDefinition在IoC容器中的註冊

之前分析了關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的註冊過程,之後我將繼續分析關於依賴注入的原理。