关闭

Bean 后处理器

标签: bean处理器
126人阅读 评论(1) 收藏 举报

Bean 后处理器是一种特殊的 Bean,容器中所有的 Bean 在初始化时,均会自动执行该类的两个方法。由于该 Bean 是由其它 Bean 自动调用执行,不是程序员手工调用,故此 Bean无须 id 属性。
需要做的是,在 Bean 后处理器类方法中,只要对 Bean 类与 Bean 类中的方法进行判断,就可实现对指定的 Bean 的指定方法进行功能扩展与增强。方法返回的 Bean 对象,即是增过的对象。
代码中需要自定义 Bean 后处理器类。该类就是实现了接口 BeanPostProcessor 的类。该接口中包含两个方法,分别在目标 Bean 初始化完毕之前与之后执行。它们的返回值为:功能被扩展或增强后的 Bean 对象。
Bean 初始化完毕有一个标志:一个方法将被执行。即当该方法被执行时,表示该 Bean
被初始化完毕。所以 Bean 后处理器中两个方法的执行,是在这个方法之前之后执行。这个方法在后面将会讲到。
public Object postProcessBeforeInitialization(Object bean, String beanId)throws BeansException
该方法会在目标 Bean 初始化完毕之前由容器自动调用。
public Object postProcessAfterInitialization(Object bean, String beanId) throws BeansException
该方法会在目标 Bean 初始化完毕之后由容器自动调用。
它们的参数是:第一个参数是系统即将初始化的 Bean 实例,第二个参数是该 Bean 实例的 id 属性值。若 Bean 没有 id 就是 name 属性值。
举例: ba05 包
程序中有一个业务接口 IService,其有两个业务方法 some()与 other()。有两个 Bean:
StudentServiceImpl 与 TeacherServiceImpl,均实现了 IService 接口。
要求:对 StudentServiceImpl 的 some()方法进行增强,输出其开始执行时间与执行结束时间。
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:447615次
    • 积分:3723
    • 等级:
    • 排名:第8643名
    • 原创:29篇
    • 转载:19篇
    • 译文:0篇
    • 评论:4条
    文章分类
    文章存档
    最新评论