文档章节

BeanPostProcessor接口(Bean后处理器)

shamgod_code
 shamgod_code
发布于 2016/10/18 02:28
字数 628
阅读 49
收藏 0

Spring框架提供了很好的扩展性,除了可以与各种第三方框架良好整合外,其IOC容器也允许开发者进行扩展,这种扩展甚至无需实现BeanFactory或ApplicationContext接口,而是允许通过两个后处理器对IOC容器进行扩展。Spring提供了两种常用的后处理器:

名称 描述
Bean后处理器 这种后处理器会对容器中的Bean进行后处理,对Bean功能进行额外增强
容器后处理器 这种后处理器对IOC容器进行后处理,用于增强容器功能

Bean后处理器:

Bean后处理器是一种特殊的Bean,这种特殊Bean并不对外提供服务,它甚至可以无须id属性。它主要负责对容器中的其他Bean执行后处理,例如为容器中的目标Bean生成代理等,这种Bean被称为Bean后处理器。

Bean后处理器会在Bean实例创建成功之后,对Bean实例进行进一步的增强处理。

Bean后处理器必须实现BeanPostProcessor接口
 

接口方法 描述
Object postProcessBeforeInitialization(Object bean,String name) throws BeansException bean参数表示系统即将进行后处理的Bean实例,name参数是该Bean实例的名字
Object postProcessAfterInitialization(Object bean,String name) throws BeansException bean参数表示系统即将进行后处理的Bean实例,name参数是该Bean实例的名字

实现该接口的Bean后处理器必须实现这两个方法,这两个方法会对容器中的Bean进行后处理。会在目标Bean初始化之前、初始化之后分别被回调,这两个方法用于对容器中的Bean实例进行增强处理。

Bean后处理器两个方法的回调时机:

BeanPostProcessor通常用来检查标记接口,或者做如将Bean包装成一个Proxy的事情,Spring的很多工具类,就是通过Bean后处理器完成的。

下面是Spring提供的两个常用的后处理器:
 

名称 描述
BeanNameAutoProxyCreator 根据Bean实例的name属性,创建Bean实例的代理
DefaultAdvisorAutoProxyCreator 根据提供的Advisor,对容器中所有的Bean实例创建代理

上面提供的两个Bean后处理器,都用于根据容器中配置的拦截器,创建代理Bean。代理Bean就是对目标Bean进行增强、在目标Bean的基础上进行修改得到的新Bean。

© 著作权归作者所有

shamgod_code
粉丝 5
博文 82
码字总数 31063
作品 0
杭州
私信 提问
Spring中的BeanPostProcessor接口

Spring提供了很多扩展接口,BeanPostProcessor接口和InstantiationAwareBeanPostProcessor接口就是其中两个。 BeanPostProcessor BeanPostProcessor接口作用是:如果我们需要在Spring容器完成...

真爱2015
2015/12/24
36
0
spring bean生命周期

Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也...

newworld2010
2016/10/08
24
0
Spring中bean后置处理器BeanPostProcessor

上一篇我们知道了Spring中bean工厂后置处理器的作用和触发时间。 作用:允许我们在工厂里所有的bean被加载进来后但是还没初始化前,对所有bean的属性进行修改也可以add属性值。 触发时间:先...

激情的狼王丶21
2017/11/28
0
0
Spring Bean的生命周期

1.当调用者通过getBean(beanName)向容器请求某一个Bean时,如果容器注册了org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor接口,在实例化Bean之前,将调用接...

我吃草莓
2014/04/10
0
0
spring-ioc-native&容器扩展点

章节地址 7.6自定义一个bean的生命 (nature) 7.6.1 lifecycle callbacks(生命周期回调) 与容器的bean的生命周期管理相关,你可用实现spring的InitializingBean和DisposableBean接口.对于前者,...

流光韶逝
2016/08/15
3
0

没有更多内容

加载失败,请刷新页面

加载更多

软件项目开发流程——看这篇文章就够了

项目开发流程 1.可行性分析 干什么?有没有市场;谁来做?市场部+销售部,出可行性报告。 2.需求分析 需求分析师(懂技术+懂业务)【挖掘客户真正的需求】,需求分析报告(白皮书) 3.设计阶...

须臾之余
24分钟前
2
0
jenkins多个slave遇到的坑

jenkins配置如下: 在Jenkins上添加了两个节点(Slave Node),且为这两个节点设置了一个相同的标签"windows"。创建了一个新Job – "test-windows",选择的是”构建一个自由风格的软件项目”。...

shzwork
28分钟前
1
0
stimulsoft入门教程:分层报表(上)

下载Stimulsoft Reports.Ultimate最新版本 Stimulsoft专题页:全面汇集Stimulsoft视频教程、版本更新、使用教程、应用案例和相关开发资源等。 执行以下步骤以创建分层报表: 运行设计器 连接...

xiaochuachua
34分钟前
1
0
好程序员大数据教学点睛:Hadoop基础篇

  好程序员大数据教学点睛:Hadoop基础篇,Hadoop包含两个部分: 1.Hadoop Distributed File System (Hadoop分布式文件系统) HDFS具有高容错性,并且可以被部署在低价的硬件设备之上。HDF...

好程序员IT
35分钟前
1
0
京东网络开放之路——自研交换机探索与实践

相比传统商业交换机,白盒交换机具有更好的开放性和灵活性,解决了运维管理方面的诸多痛点,随着SONiC的不断完善和白盒交换机市场的成熟,京东基于SONiC研发了自己的白盒交换机,更加适合京东...

京东云技术新知
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部