Spring学习笔记——AnnotationConfigWebApplicationContext加载BeanDefinition


AbstractApplicationContext.obtainRefreshFactory方法获得新的BeanFactory,主要操作由子类自定义实现

AbstractRefreshableApplicationContext.refreshBeanFactory方法,初始化DefaultListableBeanFactory

1.customizeBeanFactory方法自定义设置BeanFactory属性

     

2.loadBeanDefinitions方法加载所有BeanDefinition,根据子类不同而不同,以AnnotationConfigWebApplicationContext为例

     a)获取AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionReader及BeanNameGenerator

     

     b)若BeanNameGenerator不为空,则AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionReader使用设置的BeanNameGenerator;若为空,则取各自默认BeanNameGenerator

     

     c)同理,ScopeMetadataResolver与BeanNameGenerator相同逻辑;ScopeMetadataResolver用于解析@Scope注解

     

     d)  注册自定义添加的annotatedClass到AnnotatedBeanDefinitionReader中

AnnotatedBeanDefinitionReader.registerBean方法,注册Class作为BeanDefinition

  

     e)ClassPathBeanDefinitionScanner扫描指定包路径下所有class

     

     f)取configLocations配置,先当作AnnotatedClass进行注册,若找不到类,则当作包路径用以扫描BeanDefinition


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM