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 中掙扎?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
