Spring 學習之 bean的前、後處理

    在Bean被創建以及裝配後,BeanPostProcessor 接口爲你提供了二次機會來修改這個bean。
     public interface BeanPostProcessor{
        Object postProcessBeforeInitialization(Object bean, String name) throws BeansException;
        Object postProcessAfterInitialization(Object bean, String name) throws BeansException;
     }

     public class Fuddifier implements BeanPostProcessor{
       public Object postProcessAfterInitialization(Object bean, String name){
         Field[] fileds = bean.getClass().getDeclaredFields();
         try{
           for(int i=0;i<fields.length;i++){
             if(fileds[i].getType().equals(java.lang.String.class)){
                fields[i].setAccessible(true);
                String original = (String) fields[i].get(bean);
                fields[i].set(bean, fuddify(original));
             }
           }
         } catch(IllegalAccessException e){
             e.printStackTrace();
           }
         return bean;
       }
 
       private String fuddify(String orig){
         if(orig == null ) return orig;
         return orig.replaceAll("(r|l)","w").replaceAll("(R|L)","W");
        }
    
       public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException{
          return bean;
       }
     }

   spring 還可以監聽事件和發佈事件,只需要實現相應的接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章