Spring中Bean的生命周期
来源:互联网 发布:书法坊米芾体字体 mac 编辑:程序博客网 时间:2024/04/30 03:38
原文链接
BeanFactory和ApplicationContext是Spring中两种很重要的容器,前者提供了最基本的依赖注入的支持,后者在继承前者的基础上进行了功能的拓展,增加了事件传播,资源访问,国际化的支持等功能。同时两者的生命周期也稍微有些不同。
BeanFactory中Bean的生命周期
- 容器寻找Bean的定义信息,并将其实例化。
- 使用依赖注入,Spring按照Bean定义信息配置Bean的所有属性。
- 如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的id。
- 如果实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身。
- 如果BeanPostProcessor和Bean关联,那么它们的postProcessBeforeInitialization()方法将被调用。(需要手动进行注册!)
- 如果Bean实现了InitializingBean接口,则会回调该接口的afterPropertiesSet()方法。
- 如果Bean指定了init-method方法,就会调用init-method方法。
- 如果BeanPostProcessor和Bean关联,那么它的postProcessAfterInitialization()方法将被调用。(需要手动注册!)
- 现在Bean已经可以使用了。
- scope为singleton的Bean缓存在Spring IOC容器中。
- scope为prototype的Bean生命周期交给客户端。
- 销毁。
- 如果Bean实现了DisposableBean接口,destory()方法将会被调用。
- 如果配置了destory-method方法,就调用这个方法。
ApplicationContext中Bean的生命周期
- 容器寻找Bean的定义信息,并将其实例化。会对scope为singleton且非懒加载的bean进行实例化
- 使用依赖注入,Spring按照Bean定义信息配置Bean的所有属性。
- 如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的id。
- 如果实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身。
- 如果实现了ApplicationContextAware接口,会调用该接口的setApplicationContext()方法,传入该Bean的ApplicationContext,这样该Bean就获得了自己所在的ApplicationContext。
- 如果Bean实现了BeanPostProcessor接口,则调用postProcessBeforeInitialization()方法。
- 如果Bean实现了InitializingBean接口,则会回调该接口的afterPropertiesSet()方法。
- 如果Bean制定了init-method方法,就会调用init-method方法。
- 如果Bean实现了BeanPostProcessor接口,则调用postProcessAfterInitialization()方法。
- 现在Bean已经可以使用了。
- scope为singleton的Bean缓存在Spring IOC容器中。
- scope为prototype的Bean生命周期交给客户端。
- 销毁。
- 如果Bean实现了DisposableBean接口,destory()方法将会被调用。
- 如果配置了destory-method方法,就调用这个方法。
两种容器中的不同之处
- BeanFactory容器中不会调用ApplicationContext接口的setApplicationContext()方法。
- BeanFactory中BeanPostProcessor接口的postProcessBeforeInitialzation()方法和postProcessAfterInitialization()方法不会自动调用,必须自己通过代码手动注册。
- BeanFactory容器启动的时候,不会去实例化所有Bean,包括所有scope为singleton且非懒加载的Bean也是一样,而是在调用的时候去实例化。
0 0
- Spring中bean的生命周期
- Spring 中 Bean 的生命周期
- Spring 中bean 的生命周期
- Spring中Bean的生命周期
- Spring中bean的生命周期
- Spring中bean的生命周期
- Spring中bean的生命周期
- Spring中Bean的生命周期
- spring中bean的生命周期
- spring中bean的生命周期
- Spring中bean的生命周期
- spring中bean的生命周期
- Spring中Bean的生命周期
- Spring中bean的生命周期
- Spring中Bean的生命周期
- Spring中Bean的生命周期
- Spring中Bean的生命周期
- Spring中Bean的生命周期
- 【注册问题】sublime text 不完全注册
- linux知识汇总
- 高效LibJsonRpcEx库
- siphome主要类
- 机器学习中分类与聚类的本质区别
- Spring中Bean的生命周期
- PAT 1107 Social Clusters
- 第一周:Linux初学者笔记
- 极限
- siphome组成
- 01背包采药问题 模版
- 博为峰JavaEE技术文章 ——MyBatis @param使用方法
- 线段树模板(乘法加法一起处理哦)
- Linux学习----1