欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring之DefaultListableBeanFactory的bean的创建过程

程序员文章站 2022-03-12 22:12:28
...
一、DefaultListableBeanFactory简介
    DefaultListableBeanFactory是bean加载的核心部分,是Spring注册及加载的默认实现。继承关系如下图:
spring之DefaultListableBeanFactory的bean的创建过程
            
    
    博客分类: spring DefaultListableBeanFactoryBeanFactorycreateBeangetBeanIOC 
    AbstractAutowireCapableBeanFactory完成Bean的创建,属性的注入,切面代理的产生,bean的生命周期的管理。

二、AbstractAutowireCapableBeanFactory源码分析
    doCreateBean方法完成了bean的创建和初始化
spring之DefaultListableBeanFactory的bean的创建过程
            
    
    博客分类: spring DefaultListableBeanFactoryBeanFactorycreateBeangetBeanIOC 
spring之DefaultListableBeanFactory的bean的创建过程
            
    
    博客分类: spring DefaultListableBeanFactoryBeanFactorycreateBeangetBeanIOC 
    Spring容器中默认注册了多个后置处理器。实现InstantiationAwareBeanPostProcessor接口的类,在bean实例化前后和初始化前后会调用相应的实现方法。
    1.createBeanInstance():通过反射实现实例化bean。
    2.addSingletonFactory():如果是单例,加入到单例池中。
    3.populateBean():注入属性对象
        3.1 遍历BeanPostProcessor列表,回调postProcessAfterInstantiation()方法。
        3.2 遍历BeanPostProcessor列表,回调postProcessPropertyValues()方法。
             CommonAnnotationBeanPostProcessor:注入@Resource注释的对象。
             AutowiredAnnotationBeanPostProcessor:注入@Autowired注释的对象。
             RequiredAnnotationBeanPostProcessor校验@Required注释的方法是否调用。
    4. initializeBean():初始化bean。
        4.1 遍历BeanPostProcessor列表,回调postProcessBeforeInitialization()方法。
            ApplicationContextAwareProcessor:回调实现了EnvironmentAware,EmbeddedValueResolverAware,ResourceLoaderAware,ApplicationEventPublisherAware,ApplicationContextAware等接口的方法,注入对应的Environment,StringValueResolver,ResourceLoader,ApplicationEventPublisher,ApplicationContext对象。
            ServletContextAwareProcessor:回调实现了ServletContextAware,ServletConfigAware等接口的方法,注入对应的ServletContext,ServletConfig对象。
        4.2 如果实现InitializingBean接口就回调bean的afterPropertiesSet()方法。
        4.3 如果bean配置了initMethod属性,执行initMethod指定的方法。
        4.4 遍历BeanPostProcessor列表,回调postProcessAfterInitialization()方法。
            ApplicationListenerDetector:注册ApplicationListener。

  • spring之DefaultListableBeanFactory的bean的创建过程
            
    
    博客分类: spring DefaultListableBeanFactoryBeanFactorycreateBeangetBeanIOC 
  • 大小: 46.4 KB
  • spring之DefaultListableBeanFactory的bean的创建过程
            
    
    博客分类: spring DefaultListableBeanFactoryBeanFactorycreateBeangetBeanIOC 
  • 大小: 156.5 KB
  • spring之DefaultListableBeanFactory的bean的创建过程
            
    
    博客分类: spring DefaultListableBeanFactoryBeanFactorycreateBeangetBeanIOC 
  • 大小: 63.7 KB