zoukankan      html  css  js  c++  java
  • BeanPostProcessor 的使用,实现在对象初始化之前或者之后对对象进行操作


    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 中挣扎 




  • 相关阅读:
    透视校正插值
    投影矩阵推导
    编程思想-小即是美
    Win10使用小技巧
    TotalCommander 之 快捷键
    TotalCommander 之 配置
    TotalCommander 之 日常使用技巧
    上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。不笑不足以为道。
    《诫子书》
    青春不是年华,而是心境
  • 原文地址:https://www.cnblogs.com/zhanyao/p/4410434.html
Copyright © 2011-2022 走看看