【spring原始碼學習】spring的IOC容器在初始化bean過程

Love Lenka發表於2017-07-24

【一】初始化IOC的bean的時候Spring會執行的一些回撥方法

(1)spring bean建立的前置處理

    =>ApplicationContextAwareProcessor 在建立bean的時候呼叫

      bean.setEnvironment(this.applicationContext.getEnvironment())

      bean.setEmbeddedValueResolver(new EmbeddedValueResolver(this.applicationContext.getBeanFactory()))

      bean.setResourceLoader(this.applicationContext)

      bean.setApplicationEventPublisher(this.applicationContext)

      bean.setMessageSource(this.applicationContext)

      setApplicationContext(this.applicationContext)

    =>在該階段spring配置的或者我們自定義的 BeanPostProcessor的介面實現會執行postProcessBeforeInitialization(final Object bean, String beanName)方法 中呼叫相關Aware的介面方法。


(2)spring的Aware的相關介面的呼叫

    =>BeanNameAware的setBeanName(beanName)

    =>BeanClassLoaderAware的setBeanClassLoader(getBeanClassLoader())

    =>BeanFactoryAware 的setBeanFactory(AbstractAutowireCapableBeanFactory.this)
(3)spring的InitializingBean的介面的呼叫
    =>afterPropertiesSet()方法的呼叫

(4)bean中配置的init方法

    =>自定義配置

(5)spring bean建立的後置處理

    =>在該階段spring配置的或我們自定義的BeanPostProcessor的介面實現會執行postProcessAfterInitialization(Object bean, String beanName)方法
    =>例如事務管理代理,動態代理的代理物件建立,都在這個環節完成。

 

相關文章