没有合适的资源?快使用搜索试试~ 我知道了~
Spring Bean 的生命周期.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 90 浏览量
2022-06-19
20:55:37
上传
评论
收藏 224KB DOCX 举报
温馨提示
试读
15页
Spring的生命周期是指实例化Bean时所经历的一系列阶段,即通过getBean()获取bean对象及设置对象属性时,Spring框架做了哪些事。Bean的生命周期从Spring容器实例化Bean到销毁Bean。 本文分别对 BeanFactory 和 ApplicationContext 中的生命周期进行分析。
资源推荐
资源详情
资源评论
Spring Bean 的生命周期
Spring 的生命周期是指实例化 Bean 时所经历的一系列阶段,即通过 getBean()
获取 bean 对象及设置对象属性时,Spring 框架做了哪些事。Bean 的生命周期
从 Spring 容器实例化 Bean 到销毁 Bean。
本文分别对 BeanFactory 和 ApplicationContext 中的生命周期进行分析。
一、BeanFactory 实例化 Bean 相关接口
Bean 级生命周期接口:(4 个)
1、BeanNameAware
//待对象实例化并设置属性之后调用该方法设置 BeanName
void setBeanName(String beanName);
2、BeanFactoryAware
//待调用 setBeanName 之后调用该方法设置
BeanFactory,BeanFactory 对象默认实现类是
DefaultListableBeanFactory
void setBeanFactory(BeanFactory var1) throws
BeansException;
3、InitializingBean
//实例化完成之后调用(调用了
BeanPostProcessor.postProcessBeforeInitialization 方法之后调
用该方法)
void afterPropertiesSet() throws Exception;
4、DisposableBean
//关闭容器时调用
void destroy() throws Exception;
这 4 个接口都在包 org.springframework.beans.factory 下,它们是 Bean 级生
命周期接口,这些接口由 Bean 类直接实现。
容器级 Bean 生命周期接口:(2 个)
1、抽象类:InstantiationAwareBeanPostProcessorAdapter
实例化前/后,及框架设置 Bean 属性时调用该接口。可覆盖的常用方法有:
//在 Bean 对象实例化前调用
@Override
public Object postProcessBeforeInstantiation(Class<?> beanClass,
String beanName) throws BeansException;
//在 Bean 对象实例化后调用(如调用构造器之后调用)
@Override
public boolean postProcessAfterInstantiation(Object bean, String
beanName) throws BeansException;
/**
* 在设置某个属性前调用,然后再调用设置属性的方法
* 注意:这里的设置属性是指通过配置设置属性,直接调用对象的 setXX 方法不会调用该方
法,如 bean 配置中配置了属性 address/age 属性,将会调用该方法
* @param pvs 如 PropertyValues: length=2; bean property 'address';
bean property 'age'
*/
@Override
public PropertyValues postProcessPropertyValues(PropertyValues pvs,
PropertyDescriptor[] pds, Object bean, String beanName) throws
BeansException;
2、接口 BeanPostProcessor
实例化完成之后调用该接口。可实现的接口方法有:
//实例化完成,setBeanName/setBeanFactory 完成之后调用该方法
public Object postProcessBeforeInitialization(Object o, String s)
throws BeansException;
//全部是实例化完成以后调用该方法
public Object postProcessAfterInitialization(Object o, String s)
throws BeansException;
这两个接口都在包 org.springframework.beans.factory.config 下,一般称它们
“ ”的实现类为 后处理器 。后处理器接口一般不由 Bean 本身实现,实现类以容器
附加装置的形式注册到 Spring 容器中。
当 Sprig 容器创建任何 Bean 的时候,这两个后处理器都会发生作用,所以这两
个后处理器的影响是全局的。用户可以通过合理的代码控制后处理器只对固定
的 Bean 创建进行处理。
Bean 级生命周期接口解决 Bean 个性化处理的问题,Bean 容器级生命周期接
口解决容器中某些 Bean 共性化处理的问题。
二、BeanFactory 的 bean 生命周期相关代码
1、xml bena 配置
<bean id="person" class="demo02.bean.Person"
p:address="上海市"
p:age="25"
init-method="myInit"
destroy-method="myDestroy"
/>
p:address/p:age 在实例化的时候会调用 Bean 的对应 setXX 方法设置属性。
2、java 相关代码
InstantiationAwareBeanPostProcessorAdapter 实现类相关代码
/**
* 实例化前/后,及框架设置 Bean 属性时调用该接口
*/
public class MyInstantiationAwareBeanPostProcessor extends
InstantiationAwareBeanPostProcessorAdapter {
//在 Bean 对象实例化前调用
剩余14页未读,继续阅读
资源评论
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功