【一】初始化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)方法
=>例如事務管理代理,動態代理的代理物件建立,都在這個環節完成。