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