佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價包郵 憂憂魚冬外穿打底褲女秋冬厚長褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國代購2013新款 韓版秋冬休閑女時尚磨破口袋衛衣韓版學生裝 潮

          有時,退一步,能一口氣進幾步,只是這先退一步需要勇氣和自信。

          用心愛你,努力工作。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            70 隨筆 :: 1 文章 :: 33 評論 :: 0 Trackbacks

          呵呵,這兩天項目比較急,事情也比較多,所以沒有及時更新。
          上一回簡單介紹了代理機制,通過創建LogBeforeAdvice來實現。通過實現MethodBeforeAdvice接口,會在目標對象的方法執行之前被呼叫。當然也可以通過實現AfterReturningAdvice,使得目標對象的方法在執行之后被調用。
          同樣創建LogAfterAdvice類,實現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"><!--建立代理對象-->
            <property name="proxyInterfaces"><!--代理接口-->
             <value>com.proxy.IHello</value>
            </property>
            <property name="target"><!--代理目標-->
             <ref bean="helloSpeaker"/>
            </property>
            <property name="interceptorNames"><!--代理實現類-->
             <list>
              <value>logBeforeAdvice</value>
              <value>logAfterAdvice</value>
             </list>
            </property>
           </bean>
           
          </beans>

          這樣就實現了目標對象的方法在執行之后被調用。


          同樣,在方法執行前后調用目標對象的方法也可以不通過上面的這種方式(畢竟實現兩個接口比較麻煩),可以直接通過實現MethodInterceptor接口,達到目的。
          如LogInterceptor類便實現了這樣的接口,如下
          (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"><!--建立代理對象-->
            <property name="proxyInterfaces"><!--代理接口-->
             <value>com.proxy.IHello</value>
            </property>
            <property name="target"><!--代理目標-->
             <ref bean="helloSpeaker"/>
            </property>
            <property name="interceptorNames"><!--代理實現類-->
             <list>
              <value>logInterceptor</value>
             </list>
            </property>
           </bean>
           
          </beans>

          通過實現MethodInterceptor接口,同樣實現了這樣的功能。



           

          posted on 2007-10-31 19:14 王生生 閱讀(970) 評論(0)  編輯  收藏 所屬分類: Spring
          森露2013新款豹紋打底衫 高領 女 長袖 修身長袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長袖小西裝外套女 韓版中長款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 台江县| 昌吉市| 乡城县| 荣成市| 庆元县| 防城港市| 仁布县| 慈利县| 辛集市| 华阴市| 渭南市| 陆川县| 成都市| 潜山县| 德惠市| 科尔| 雅江县| 克什克腾旗| 横峰县| 伊宁县| 灵山县| 子洲县| 永年县| 左权县| 宜丰县| 利川市| 昆明市| 贵定县| 博白县| 天等县| 封开县| 铅山县| 泉州市| 涞源县| 昌平区| 梁平县| 铜陵市| 麦盖提县| 蕉岭县| 图们市| 玉龙|