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
          正在學習中支持
          主站蜘蛛池模板: 靖远县| 古交市| 天台县| 溆浦县| 南康市| 布尔津县| 石渠县| 恩施市| 忻城县| 肇源县| 宁阳县| 昌吉市| 正蓝旗| 汉阴县| 惠水县| 南开区| 南康市| 惠安县| 禹城市| 茶陵县| 日土县| 黑龙江省| 永修县| 陈巴尔虎旗| 普兰店市| 松溪县| 湟源县| 库尔勒市| 读书| 永善县| 武冈市| 四子王旗| 彝良县| 肇东市| 仁怀市| 五大连池市| 甘德县| 鸡西市| 莆田市| 电白县| 类乌齐县|