小魚的空氣

          記錄我所思

          Spring 中方法的替換

          · 先建立一個包:javamxj.spring.basic.MethodReplacer ,然后把以下5個文件放在這個包下。
          ?
          Hello.java
          package javamxj . spring . basic . MethodReplacer ;

          public interface Hello {
          ??? publicvoid sayHello(String s);
          }
          ?
          HelloImpl.java
          package javamxj . spring . basic . MethodReplacer ;

          public class HelloImpl implements Hello {
          ??? publicvoid sayHello(String name) {
          ??????? System.out.println("Hello: " + name);
          ??? }
          }
          ?
          HelloReplacer.java
          package javamxj . spring . basic . MethodReplacer ;

          import java . lang . reflect . Method ;

          import org . springframework . beans . factory . support . MethodReplacer ;

          public class HelloReplacer implements MethodReplacer {
          ??? publicObject reimplement(Object o, Method m, Object[] args) throwsThrowable {

          ??????? System.out.println("你好: " + args[0]);
          ??????? returnnull;
          ??? }
          }
          ?
          beans.xml
          <? xml version = " 1.0 " encoding = " GBK " ?>
          <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >

          < beans >
          ??? <bean id="helloReplacer" class="javamxj.spring.basic.MethodReplacer.HelloReplacer"/>
          ???
          ??? <bean id="helloA" class="javamxj.spring.basic.MethodReplacer.HelloImpl"/>
          ???
          ??? <bean id="helloB" class="javamxj.spring.basic.MethodReplacer.HelloImpl">
          ??????? <replaced-method name="sayHello" replacer="helloReplacer"/>
          ??? </bean>
          ???
          </beans>
          ?
          Main.java
          package javamxj . spring . basic . MethodReplacer ;

          import org . springframework . beans . factory . BeanFactory ;
          import org . springframework . beans . factory . xml . XmlBeanFactory ;
          import org . springframework . core . io . ClassPathResource ;
          import org . springframework . core . io . Resource ;

          public class Main {
          ??? publicstaticvoid main(String[] args) {
          ??????? Resource res = new ClassPathResource(
          ??????????????? "javamxj/spring/basic/MethodReplacer/beans.xml");
          ??????? BeanFactory ft = new XmlBeanFactory(res);

          ??????? // 沒有使用replaced-method
          ??????? Hello h = (Hello) ft.getBean("helloA");
          ??????? h.sayHello("分享Java快樂");
          ???????
          ??????? // 使用replaced-method
          ??????? h=(Hello) ft.getBean("helloB");
          ??????? h.sayHello("分享Java快樂");

          ??? }
          }
          ?
          ?
          簡單說明一下:
          ?
          · Hello是一個接口類,實現面向接口編程。
          ?
          · HelloImpl類實現了Hello接口,簡單的輸出一個語句。
          ?
          · HelloReplacer類要實現MethodReplacer接口,reimplement中提供替換后的方法。
          ?
          · beans.xml中定義了三個bean,helloReplacer指向HelloReplacer類;helloA和helloB都指向HelloImpl類,其中helloB中定義了replaced-method。
          ?
          · 在Main類中,對比輸出使用replaced-method前后的語句。
          ?
          · 這次需要將 spring-framework主目錄\lib\cglib 目錄中的cglib-nodep-2.1_2.jar加入到項目的 Libraries中,使用其中的動態代理。
          ?
          ?
          運行結果:
          ?
          Hello: 分享Java快樂
          你好: 分享Java快樂
          ?

          posted on 2006-10-23 16:52 小魚 閱讀(264) 評論(1)  編輯  收藏

          評論

          # re: Spring 中方法的替換 2006-10-23 17:33 冰川

          呵呵,支持下!  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(3)

          我參與的團隊

          隨筆檔案

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 桂平市| 邳州市| 庆云县| 固原市| 华池县| 乌兰县| 蒙阴县| 南投市| 同江市| 南陵县| 临泉县| 开阳县| 巴青县| 尉犁县| 丹凤县| 尼木县| 阳江市| 自治县| 县级市| 托克逊县| 玉树县| 巴塘县| 宜黄县| 台南县| 綦江县| 山东省| 隆化县| 宜良县| 汾阳市| 科技| 大悟县| 右玉县| 兴业县| 安塞县| 龙山县| 华池县| 崇礼县| 沧州市| 鹤山市| 汕头市| 都江堰市|