【spring源码学习】spring的IOC容器在初始化bean过程
2017-07-24 17:06
976 查看
【一】初始化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)方法
=>例如事务管理代理,动态代理的代理对象创建,都在这个环节完成。
(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)方法
=>例如事务管理代理,动态代理的代理对象创建,都在这个环节完成。
相关文章推荐
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- 【Spring】IOC核心源码学习(二):容器初始化过程
- spring源码学习之路---深度分析IOC容器初始化过程(四)
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- 【Spring】IOC核心源码学习(二):容器初始化过程
- spring源码学习之路---IOC容器初始化要义之bean定义载入
- spring容器初始化,bean加载生成过程,源码解析学习
- spring源码学习之路---深度分析IOC容器初始化过程(四)
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- spring源码学习之路---深度分析IOC容器初始化过程(三)
- 【Spring】IOC核心源码学习:容器初始化过程
- spring源码学习之路---深度分析IOC容器初始化过程(四)
- 【Spring】IOC核心源码学习(二):容器初始化过程
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- spring源码学习之路---IOC容器初始化要义之bean定义载入(四)
- Spring IOC学习心得之IOC容器的初始化过程
- Spring源码分析----IOC容器的实现(IoC容器的初始化过程(定位、载入解析、注册))
- Spring源码-IOC容器(五)-Bean的初始化
- Spring IOC容器bean初始化源码分析
- Spring源码解析二:IOC容器初始化过程详解