import java.lang.reflect.Field;

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

public class UpperCaseModifier implements BeanPostProcessor {

@Override
public Object postProcessAfterInitialization(Object bean, String name)
throws BeansException {
// TODO Auto-generated method stub
System.out.println("对象" + name + "实例化完成");
return bean;
}

@Override
public Object postProcessBeforeInitialization(Object bean, String name)
throws BeansException {
System.out.println("对象" + name + "开始实例化");
// 取 bean 所有属性
Field[] fields = bean.getClass().getDeclaredFields();
for (int i=0; i<fields.length; i++) {
//判断 name 字段
if (fields[i].getName().equals("name")) {
//设置该字段可访问
fields[i].setAccessible(true);
try {
String original = (String) fields[i].get(bean);
System.out.println(original);
fields[i].set(bean, original.toUpperCase());
} catch (Exception e) {
e.printStackTrace();
}
}
}
return bean;
}

}

以上代码实现将 name 属性值中的小写字母转变为大写字母;

BeanPostProcessor 接口包括两个方法:
postProcessAfterInitialization:在实例化之后进行操作
postProcessBeforeInitialization:在实例化之前进行操作

要在配置文件中引入该类:

<bean id="upperCaseModifier" class="UpperCaseModifier"></bean> 


渣渣就得在 Bug 中挣扎 

BeanPostProcessor 的使用,实现在对象初始化之前或者之后对对象进行操作的更多相关文章

  1. C++中对象初始化

    在C++中对象要在使用前初始化,永远在使用对象之前先将它初始化. 1.对于无任何成员的内置类型,必须手工完成此事. 例如: int x=0; double d; std::cin>>d; ...

  2. EC笔记,第一部分:4.确定对象初始化

    04.确定对象初始化 将对象初始化,C++反复无常,所以在使用前应该手动初始化 1.分清赋值与初始化 以下例子: class test{ public: int a; test(){ a=0;//赋值 ...

  3. [Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

    目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式 ...

  4. Linq专题之对象初始化器

    在C#3.0之前,如果创建一个新的对象,往往需要调用类的构造函数来初始化该对象的值,在c#3.0提供了一个"对象初始化器"的机制,使得开发人员在创建新的对象时不通过调用类的构造函数 ...

  5. Objective-C对象初始化 、 实例方法和参数 、 类方法 、 工厂方法 、 单例模式

    1 重构Point2类 1.1 问题 本案例使用初始化方法重构Point2类,类中有横坐标x.纵坐标y两个属性,并且有一个能显示位置show方法.在主程序中创建两个Point2类的对象,设置其横纵坐标 ...

  6. JAVA 对象初始化的过程

    对象初始化的过程例:Student S    =    new Student();1.因为new Student()用到了Student类,所以会把它从硬盘上加载进入内存2.如果有static静态代 ...

  7. Java对象初始化详解

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...

  8. Java对象初始化详解(转)

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...

  9. c#对象初始化

    class test:IEquatable<test> { public int aa { get; set; } public string bb { get; set; } publi ...

随机推荐

  1. testlink的下载地址

    http://sourceforge.jp/projects/sfnet_testlink/downloads/TestLink%201.9/TestLink%201.9.12/testlink-1. ...

  2. 关于javac编译时出现“非法字符:\65279”的解决方法

    一般用UE或记事本编辑过的UTF-8的文件头会加入BOM标识,该标识由3个char组成.在UTF-8的标准里该BOM标识是可有可无的,Sun 的javac 在编译带有BOM的UTF-8的格式的文件时会 ...

  3. Firefly是什么?有什么特点?

    原地址:http://bbs.gameres.com/forum.php?mod=viewthread&tid=219285 Firefly是免费.开源.稳定.快速扩展.能 “热更新”的分布式 ...

  4. 想使用 MongoDB ,你应该了解这8个方面!

    应用性能高低依赖于数据库性能,MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关 ...

  5. maven 依赖排除

    在项目中遇到一个问题,项目使用spring 3.x,引用了某些包,这些包又依赖了spring2.x,造成项目无法启动.这种情况就需要用到maven的依赖排除,配置如下: 使用以下代码排除依赖xxxx引 ...

  6. [模拟]Codeforces509C Sums of Digits

    题目链接 题意:给n个数a[i], 要求b[i]每位数的和等于a[i], 并且b[i]要严格递增 求最小的b[i] b[0]最小一定是X9999...这样的形式 后面的b[i]位数一定大于等于前一个 ...

  7. 项目管理系统 SQL2005数据库查询CPU100%问题研究

    [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/4595084.html]  在项目管理系统中出现查询工程明细出现CPU100%卡死症状: 1.打 ...

  8. ASP.NET在主题中添加CSS文件

    ASP.NET在主题中添加CSS文件 在ASP.NET中,可以使用CSS来控制页面上HTML元素和ASP.NET控件的皮肤.如果在主题文件夹中添加了CSS文件,则在页面应用主题时也会自动应用CSS. ...

  9. 第七章Bulk设备

    小川工作室编写,本书为LM3S的USB芯片编写,上传的均为草稿,还有没修改,可能还有很多地方不足,希望各位网友原谅! QQ:2609828265 TEL:15882446438 E-mail:paul ...

  10. UAC新解(有非正常手段可以绕过)

    360第一次注册是需要弹,可是以后就不弹了开机自启动不弹框,开机自启动不弹框 服务是system权限再说一句,一般程序也不需要过UAC系统启动项白名单.UAC有一个白名单机制.还有UAC也可以通过wu ...