Spring Bean的作用域及生命周期
2018-02-10 12:04
591 查看
Bean的作用域
在bean声明时它有一个scope属性,它是用于描述bean的作用域。
可取值有:
singleton:单例 代表在spring ioc容器中只有一个Bean实例 (默认的scope)
prototype多例 每一次从spring容器中获取时,都会返回一个新的实例
request 用在web开发中,将bean对象request.setAttribute()存储到request域中
session 用在web开发中,将bean对象session.setAttribute()存储到session域中
一般常用的值是singleton与prototype
Bean的生命周期
instantiate bean对象实例化
populate properties 封装属性
如果Bean实现BeanNameAware执行setBeanName
如果Bean实现BeanFactoryAwar或ApplicationContextAwar设置工厂setBeanFactory或上下文对象setApplicationContext
如果存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization
如果Bean实现InitializingBean执行afterPropertiesSet
调用自定义的init-method方法
如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization
执行业务处理
如果Bean实现DisposableBean执行destroy
调用自定义的destroy-method
对于bean的生命周期方法: 第三步与第四步是让Bean了解spring容器。
第五步与第八步 可以针对指定的Bean进行功能增强,这时一般会使用动态代理.
第六步与第十步:通过实现指定的接口来完成init与destroy操作
但是在开发中一般不使用第6步与第10步,原因是我们可以使用第7步与第11步来完成。
第7步与第11步的初始化与销毁操作它无耦合,推荐使用的。但是必须在配置文件中指定初始化与销毁的方法
总结:
对于bean的生命周期,我们需要关注的主要有两个方法:
1. 增强bean的功能可以使用后处理Bean, BeanPostProcessor
2. 如果需要初始化或销毁操作我们可以使用init-method destroy-method
注意:destroy-method只对scope=singleton有效果。
在bean声明时它有一个scope属性,它是用于描述bean的作用域。
可取值有:
singleton:单例 代表在spring ioc容器中只有一个Bean实例 (默认的scope)
prototype多例 每一次从spring容器中获取时,都会返回一个新的实例
request 用在web开发中,将bean对象request.setAttribute()存储到request域中
session 用在web开发中,将bean对象session.setAttribute()存储到session域中
一般常用的值是singleton与prototype
Bean的生命周期
instantiate bean对象实例化
populate properties 封装属性
如果Bean实现BeanNameAware执行setBeanName
如果Bean实现BeanFactoryAwar或ApplicationContextAwar设置工厂setBeanFactory或上下文对象setApplicationContext
如果存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization
如果Bean实现InitializingBean执行afterPropertiesSet
调用自定义的init-method方法
如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization
执行业务处理
如果Bean实现DisposableBean执行destroy
调用自定义的destroy-method
对于bean的生命周期方法: 第三步与第四步是让Bean了解spring容器。
第五步与第八步 可以针对指定的Bean进行功能增强,这时一般会使用动态代理.
第六步与第十步:通过实现指定的接口来完成init与destroy操作
但是在开发中一般不使用第6步与第10步,原因是我们可以使用第7步与第11步来完成。
第7步与第11步的初始化与销毁操作它无耦合,推荐使用的。但是必须在配置文件中指定初始化与销毁的方法
<bean id="beanLifeCycle" class="com.nwtxxb.bean.BeanLifeCycle" init-method="myInit" destory-method="myDestory"> <property name="name" value="nwtxxb"></property> </bean>
总结:
对于bean的生命周期,我们需要关注的主要有两个方法:
1. 增强bean的功能可以使用后处理Bean, BeanPostProcessor
2. 如果需要初始化或销毁操作我们可以使用init-method destroy-method
注意:destroy-method只对scope=singleton有效果。
相关文章推荐
- Spring bean的作用域和生命周期
- spring Bean的作用域、生命周期和后处理器
- Spring Bean的生命周期(非常详细)
- 学习Spring(六) -- Spring中Bean的作用域以及生命周期
- Spring Bean的作用域
- Spring bean的作用域
- Bean的作用域及生命周期
- C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型(下)
- spring Bean的生命周期
- Spring bean 的生命周期
- Spring Bean在BeanFactory生命周期
- Spring Bean的作用域
- Spring Bean的生命周期
- Spring Bean的作用域 实例
- 指针,c语言关键字,作用域,生命周期,内存数据存储
- C++中变量的作用域与生命周期
- Spring Bean的生命周期管理方法
- spring bean 生命周期
- C++中变量的作用域与生命周期
- Spring Bean生命周期