佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價(jià)包郵 憂憂魚冬外穿打底褲女秋冬厚長(zhǎng)褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國(guó)代購(gòu)2013新款 韓版秋冬休閑女時(shí)尚磨破口袋衛(wèi)衣韓版學(xué)生裝 潮

          有時(shí),退一步,能一口氣進(jìn)幾步,只是這先退一步需要勇氣和自信。

          用心愛(ài)你,努力工作。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            70 隨筆 :: 1 文章 :: 33 評(píng)論 :: 0 Trackbacks

          呵呵,這兩天項(xiàng)目比較急,事情也比較多,所以沒(méi)有及時(shí)更新。
          上一回簡(jiǎn)單介紹了代理機(jī)制,通過(guò)創(chuàng)建LogBeforeAdvice來(lái)實(shí)現(xiàn)。通過(guò)實(shí)現(xiàn)MethodBeforeAdvice接口,會(huì)在目標(biāo)對(duì)象的方法執(zhí)行之前被呼叫。當(dāng)然也可以通過(guò)實(shí)現(xiàn)AfterReturningAdvice,使得目標(biāo)對(duì)象的方法在執(zhí)行之后被調(diào)用。
          同樣創(chuàng)建LogAfterAdvice類,實(shí)現(xiàn)AfterReturningAdvice接口。
          lib包下載:http://www.ziddu.com/download/3555992/SpringAndaop.rar.html

          (1)LogAfterAdvice.java

          package com.proxy;

          import java.lang.reflect.*;
          import java.util.logging.Logger;
          import java.util.logging.Level;
          import org.springframework.aop.AfterReturningAdvice;

          public class LogAfterAdvice  implements AfterReturningAdvice{

           private Logger logger=Logger.getLogger(this.getClass().getName());
           public void afterReturning(Object object,Method method,Object[] args,Object target) throws Throwable
           {
            logger.log(Level.INFO,"LogAfterAdvice mehtod ends "+method);
           }

          }
          (2)advice-config.xml修改如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

          <beans>
           <bean id="logBeforeAdvice" class="com.proxy.LogBeforeAdvice" />
              <bean id="logAfterAdvice" class="com.proxy.LogAfterAdvice" />
           <bean id="helloSpeaker" class="com.proxy.HelloSpeaker" />
           
           <bean id="helloProxy"
            class="org.springframework.aop.framework.ProxyFactoryBean"><!--建立代理對(duì)象-->
            <property name="proxyInterfaces"><!--代理接口-->
             <value>com.proxy.IHello</value>
            </property>
            <property name="target"><!--代理目標(biāo)-->
             <ref bean="helloSpeaker"/>
            </property>
            <property name="interceptorNames"><!--代理實(shí)現(xiàn)類-->
             <list>
              <value>logBeforeAdvice</value>
              <value>logAfterAdvice</value>
             </list>
            </property>
           </bean>
           
          </beans>

          這樣就實(shí)現(xiàn)了目標(biāo)對(duì)象的方法在執(zhí)行之后被調(diào)用。


          同樣,在方法執(zhí)行前后調(diào)用目標(biāo)對(duì)象的方法也可以不通過(guò)上面的這種方式(畢竟實(shí)現(xiàn)兩個(gè)接口比較麻煩),可以直接通過(guò)實(shí)現(xiàn)MethodInterceptor接口,達(dá)到目的。
          如LogInterceptor類便實(shí)現(xiàn)了這樣的接口,如下
          (3)LogInterceptor.java

          package com.proxy;

          import java.util.logging.Logger;
          import java.util.logging.Level;
          import org.aopalliance.intercept.*;

          public class LogInterceptor  implements MethodInterceptor{

           private Logger logger=Logger.getLogger(this.getClass().getName());

           public Object invoke(MethodInvocation Invocation) throws Throwable {
            
            logger.log(Level.INFO,"LogInterceptor method starts..."+Invocation.getMethod());
            
            Object result=null;
            
            try
            {
             result=Invocation.proceed();
            }
            finally
            {
             logger.log(Level.INFO,"LogInterceptor method ends..."+Invocation.getMethod());
            }
            return result;
           }

          }

          (4)advice-config.xml 配置文件修改如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

          <beans>
           <bean id="logInterceptor" class="com.proxy.LogInterceptor" />
           <bean id="helloSpeaker" class="com.proxy.HelloSpeaker" />
           
           <bean id="helloProxy"
            class="org.springframework.aop.framework.ProxyFactoryBean"><!--建立代理對(duì)象-->
            <property name="proxyInterfaces"><!--代理接口-->
             <value>com.proxy.IHello</value>
            </property>
            <property name="target"><!--代理目標(biāo)-->
             <ref bean="helloSpeaker"/>
            </property>
            <property name="interceptorNames"><!--代理實(shí)現(xiàn)類-->
             <list>
              <value>logInterceptor</value>
             </list>
            </property>
           </bean>
           
          </beans>

          通過(guò)實(shí)現(xiàn)MethodInterceptor接口,同樣實(shí)現(xiàn)了這樣的功能。



           

          posted on 2007-10-31 19:14 王生生 閱讀(978) 評(píng)論(0)  編輯  收藏 所屬分類: Spring
          森露2013新款豹紋打底衫 高領(lǐng) 女 長(zhǎng)袖 修身長(zhǎng)袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長(zhǎng)袖小西裝外套女 韓版中長(zhǎng)款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長(zhǎng)褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 天峨县| 泌阳县| 尖扎县| 萨迦县| 叶城县| 水富县| 江源县| 子长县| 上高县| 车险| 舒兰市| 安仁县| 日土县| 前郭尔| 库车县| 邯郸市| 临夏县| 临汾市| 望都县| 曲周县| 陇川县| 闽清县| 普兰店市| 婺源县| 长垣县| 沁源县| 叙永县| 左权县| 墨竹工卡县| 东乡县| 米脂县| 巩义市| 和田市| 鹤岗市| 新丰县| 金沙县| 营口市| 上林县| 万源市| 日喀则市| 安泽县|