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