關于BeanDefinitionReader接口特性請看這里
注:ConfigurationClassBeanDefinitionReader修飾符是default,所以在我們自己的類中是提示不出來的,只在和它同包的其他類中使用
切記,這個類并不是BeanDefinitionReader接口的子類,雖然名字很像,以及里面的方法很像,這點,在ConfigurationClassBeanDefinitionReader類注釋中有說明,它說BeanDefinitionReader接口是對Resource的操作,而ConfigurationClassBeanDefinitionReader是對configuration class的操作,而且BeanDefinitionReader很早很早之前就出現了
作用:將ConfigurationClass(模型類)變成BeanDefinition,注冊到BeanDefinitionRegistry當中
方法解釋
1.loadBeanDefinitionsForConfigurationClass
根據模型類的條件不同,所以轉換成不同的BeanDefinition
2.loadBeanDefinitionsFromRegistrars
private void loadBeanDefinitionsFromRegistrars(Map<ImportBeanDefinitionRegistrar, AnnotationMetadata> registrars) {for (Map.Entry<ImportBeanDefinitionRegistrar, AnnotationMetadata> entry : registrars.entrySet()) {// entry.getValue()會獲取到AspectJAutoProxyRegistrar類// 該類會判斷EnableAspectJAutoProxy注解,若存在該注解,則創建AnnotationAwareAspectJAutoProxyCreatorentry.getKey().registerBeanDefinitions(entry.getValue(), this.registry);}}
此處會判斷ConfigurationClass類上是否有@EnableAspectJAutoProxy注解,如果有,則創建AnnotationAwareAspectJAutoProxyCreator類并且注入到容器中
時機:在ConfigurationClassPostProccessor的接口方法processConfigBeanDefinitions中,該方法中不但new了ConfigurationClassBeanDefinitionReader,并且調用ConfigurationClassBeanDefinitionReader的方法loadBeanDefinitions
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态