Cyh的博客

          Email:kissyan4916@163.com
          posts - 26, comments - 19, trackbacks - 0, articles - 220

          Spring中的后處理

          Posted on 2009-02-17 16:28 啥都寫點 閱讀(371) 評論(1)  編輯  收藏 所屬分類: J2EE
              Spring提供了兩次機會,可以切入到Bean的生命周期中, 檢查或者修改它的配置,這叫做后處理。后處理是在Bean實例化以及裝配完成之后發生的。在Bean被創建以及裝配之后,BeanPostProcessor接口為你提供了兩次機會來修改這個Bean
            
          public interface BeanPostProcessor {
             Object postProcessBeforeInitialization(Object bean, String beanName) 
          throws 
                                                                                                                                BeansException;
             Object postProcessAfterInitialization(Object bean, String beanName) 
          throws
                                                                                                                                BeansException;
          }

          代碼示例
          public class Monkey implements BeanPostProcessor {
            
          public Object postProcessAfterInitialization(Object bean, String name)
          throws BeansException {
          System.out.println(
          "BeanPostProcessor.postProcessAfterInitialization 正在預處理!"); 

          if(bean instanceof MonkeyFriends){
          MonkeyFriends  mf 
          = (MonkeyFriends)bean;
          mf.setName1(
          "唐僧");
          mf.setName2(
          "豬八戒");
          mf.setName3(
          "沙僧");
          return bean;
          }

          return bean;
          }

              
          public Object postProcessBeforeInitialization(Object bean, String name)
          throws BeansException {
          System.out.println(
          "BeanPostProcessor.postProcessBeforeInitialization 正在預處理!");  

          return bean;
          }
          MonkeyFriends類代碼
          public class MonkeyFriends {
           
          String name1;
          String name2;
          String name3;

          public String getNames() {
          return "Monkey's friends:"+this.name1+""+this.name2+""+this.name3;

          …….省略getter、setter方法

          }
          applicationContext.xml中的配置:
          monkeyfriends中name1、name2、name3中的值可以任意寫
          <bean id="monkey" class="com.spring.IoC.Monkey" autowire="autodetect">

           
          <!-- <constructor-arg  ref="goldencudgel"/> -->
            
          <property name="name">
               
          <value>I'm Sun WuKong!!!!</value>
            </property>
            
            
          <!-- <property name="goldencudgel">
              
          <ref local="goldencudgel"/>
            
          </property>
             
          --> 
          </bean>
          <bean id="monkeyfriends" class="com.spring.IoC.MonkeyFriends">
              
          <property name="name1">
              
          <value>null</value>
              
          </property>
              
          <property name="name2">
              
          <value>null</value>
              
          </property>
              
          <property name="name3">
              
          <value>null</value>
              
          </property>
          </bean>

          <bean id="goldencudgel" class="com.spring.IoC.Goldencudgel"/>

          代碼測試:
          public class MainTest {
             
          public static void main(String[] args) {
             
           ApplicationContext ac 
          = 
                       
          new ClassPathXmlApplicationContext("applicationContext-*.xml");

           MonkeyFriends  mf 
          = (MonkeyFriends)ac.getBean("monkeyfriends");
           
           System.out.println(mf.getNames());

          //  monkey.Say();
            
          //  monkey.useGoldencudgel();
             }

          }


          運行結果:
          BeanPostProcessor.postProcessBeforeInitialization 正在預處理!
          BeanPostProcessor.postProcessAfterInitialization 正在預處理!
          Monkey
          's friends:唐僧豬八戒沙僧


                                                                                                                 --    學海無涯
                  

          Feedback

          # re: Spring中的后處理  回復  更多評論   

          2009-06-08 20:20 by siyang
          正在學習中支持
          主站蜘蛛池模板: 太谷县| 永济市| 克拉玛依市| 松滋市| 临高县| 山阳县| 自治县| 分宜县| 宜章县| 柞水县| 久治县| 中山市| 城市| 衡南县| 漳州市| 江口县| 民乐县| 镶黄旗| 浦东新区| 泰兴市| 长宁区| 七台河市| 苏尼特右旗| 同心县| 安龙县| 九江市| 富裕县| 凤城市| 波密县| 缙云县| 福安市| 台前县| 涡阳县| 临泽县| 永州市| 米林县| 吉木萨尔县| 江永县| 达尔| 旌德县| 六盘水市|