如果我們想對一個bean的所有String類型的屬性注入設定一個修正器,使其所有的注入内容均轉換成大寫,我們可以借助與Spring提供的 BeanPostProcessor接口
首先定義一個類,實作BeanPostProcessor接口,完成注入屬性的大小寫轉換
public class UppercassModifier implements BeanPostProcessor ... {
public Object postProcessBeforeInitialization(Object bean,String name) throws BeansException...{
//取得bean的field成員
Field[] fields=bean.getClass().getDeclaredFields();
for(int i=0;i<fields.lengtj;i++)...{
//針對string類型的field成員加以修正
if(fields[i].getType().equals(String.class))...{
fiels[i].setAccessible(true);
try...{
String orginal=(String)field[i].get(bean);
field[i].set(bean,orginal.toUpperCase());
}catch(Exception e)...{
}
}
}
return bean;
}
}
spring bean
public class HelloBean ... {
private String helloworld;
setter/getter方法
}
配置檔案
< bean id ="uppercaseModifier" class ="demo.UppercaseModifier" />
< bean id ="helloBean" class ="demo.HelloBean" >
< property name ="helloworld" value ="Hello" />
</ bean >
測試後,注入的Hello會自動轉換成HELO