RootBeanDefinition與GenericBeanDefinition (轉)


GenericBeanDefinition : 通用的bean實現,自2.5以后新加入的bean文件配置屬性定義類,是ChildBeanDefinition和RootBeanDefinition更好的替代者。

AnnotatedGenericBeanDefinition:存儲@Configuration注解注釋的類

ScannedGenericBeanDefinition:存儲@Component、@Service、@Controller等注解注釋的類

spring初始化時,會用GenericBeanDefinition或是ConfigurationClassBeanDefinition(用@Bean注解注釋的類)存儲用戶自定義的Bean,在初始化Bean時,又會將其轉換為RootBeanDefinition。

GenericBeanDefinition的patentName屬性指定了當前類的父類,最重要的是它實現了parentName屬性的setter、getter函數,RootBeanDefinition沒有parentName屬性,對應的getter函數只是返回null,setter函數不提供賦值操作

也就是說RootBeanDefinition不提供繼承相關的操作,但是初始化時使用的是RootBeanDefinition,那父類的性質如何體現?

這里要注意一點,子類會覆蓋父類中相同的屬性,所以Spring會首先初始化父類的RootBeanDefinition,然后根據子類的GenericBeanDefinition覆蓋父類中相應的屬性,最終獲得子類的RootBeanDefinition,這個比較巧妙,不需要使用兩個對象來體現父類與子類的關系,以后自己寫代碼時可以借鑒一下

 

轉載:https://blog.csdn.net/dhaiuda/article/details/83311495

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM