本例子源于:W3CSchool,在此作记录

Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理。

BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等。你也可以在 Spring 容器通过插入一个或多个 BeanPostProcessor 的实现来完成实例化,配置和初始化一个bean之后实现一些自定义逻辑回调方法。

你可以配置多个 BeanPostProcessor 接口,通过设置 BeanPostProcessor 实现的 Ordered 接口提供的 order 属性来控制这些 BeanPostProcessor 接口的执行顺序。

BeanPostProcessor 可以对 bean(或对象)实例进行操作,这意味着 Spring IoC 容器实例化一个 bean 实例,然后 BeanPostProcessor 接口进行它们的工作。

ApplicationContext 会自动检测由 BeanPostProcessor 接口的实现定义的 bean,注册这些 bean 为后置处理器,然后通过在容器中创建 bean,在适当的时候调用它。

在你自定义的的BeanPostProcessor 接口实现类中,要实现以下的两个抽象方法BeanPostProcessor.postProcessBeforeInitialization(Object, String) 和BeanPostProcessor.postProcessAfterInitialization(Object, String) 和,注意命名要准确

否则会出现: “ The type InitHelloWorld must implement the inherited abstract method BeanPostProcessor.postProcessBeforeInitialization(Object, String) ”之类的错误

相对于上个例子,在原来的基础上新增一个BeanPostProcessor 接口实现类,在xml配置文件中添加该实现类对应的bean

BeanPostProcessor 接口实现类如下:

package com.how2java.w3cschool.beanlife;

import org.springframework.beans.factory.config.BeanPostProcessor;

public class InitHelloWorld implements BeanPostProcessor{
public Object postProcessBeforeInitialization(Object bean,String beanName) {
System.out.println("BeforeInitialization:"+beanName);
return bean; // you can return any other object as well
} public Object postProcessAfterInitialization(Object bean,String beanName) {
System.out.println("AfterInitialization:"+beanName);
return bean; // you can return any other object as well
}
}

xml配置文件新增如下内容:

<bean class = "com.how2java.w3cschool.beanlife.InitHelloWorld"></bean>

输出的结果如下:

最新文章

  1. 整理一自己不怎么熟悉的HTML标签(会陆续更新)
  2. 修改/etc/profile文件
  3. string、math、random、datetime类
  4. angular懒加载机制 刷新后无法回退解决方案
  5. LINQ to SQL:Where、Select/Distinct
  6. 20145215《Java程序设计》第7周学习总结
  7. struts 学习
  8. 初步认识shell
  9. CentOS 更新yum源
  10. PHP中用mysqli面向过程打开连接关闭mysql数据库
  11. Billboard
  12. Codeforces Round #316 (Div. 2) D、E
  13. 【MySql】Linux下更改转移mysql数据库目录
  14. python课程第一天笔记-la
  15. 【菜鸟入门】安装配置eclipse 并编写运行第一个Java程序
  16. JavaNIO阻塞IO
  17. 使用ssh 登录Linux 文件上传下载方法
  18. JAVA连接SAP
  19. MYSQL与TiDB的执行计划
  20. mysql索引优化比普通查询速度快多少

热门文章

  1. QQ项目
  2. SRTP参数及数据包处理过程(转)
  3. priority todo
  4. P1383 高级打字机
  5. 树莓派安装cobbler,自动化安装CentOS
  6. truncate table很慢之enq: RO - fast object reuse和local write wait等待分析
  7. Linux系统更改默认Python版本
  8. opencv学习之路(2)、读取视频,读取摄像头
  9. Codeforces Round #439 (Div. 2) Problem E (Codeforces 869E) - 暴力 - 随机化 - 二维树状数组 - 差分
  10. ERROR! The server quit without updating PID file (/application/mysql-5.6.40/data/db01-51.pid).