小魚的空氣

          記錄我所思

          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 小魚 閱讀(263) 評論(1)  編輯  收藏

          評論

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

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


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


          網站導航:
           
          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(3)

          我參與的團隊

          隨筆檔案

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 福鼎市| 肇源县| 漳平市| 大足县| 融水| 涟源市| 徐州市| 珠海市| 乐至县| 祁连县| 临汾市| 阳信县| 邢台县| 洮南市| 肥城市| 济源市| 凭祥市| 申扎县| 监利县| 苏尼特右旗| 阜康市| 广宗县| 清丰县| 永宁县| 马山县| 方山县| 衡阳市| 新巴尔虎左旗| 富蕴县| 嵊州市| 会泽县| 宜兴市| 滨州市| 潮州市| 吉木萨尔县| 绍兴县| 芦溪县| 怀远县| 安化县| 晋宁县| 丹巴县|