<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 66,  comments - 11,  trackbacks - 0
        ThrowsAdvice讓你定義在異常發生時該有什么動作。ThrowsAdvice是一個標示接口,它沒有定義任何必須實現的方法。但

    是,實現這個接口的類必須至少有一個如下形式的方法:
        void afterThrowing(Throwable throwable);
        void afterThrowing(Method method,Object[] args,Object target,Throwable throwable);
    第一個方法只接受一個參數:需要拋出的異常。第二個方法接受異常、被調用的方法、參數以及目標對象。除非需要這些外加參數,你只要實現單參數方法就可以了。你的ThrowsAdvice要處理的異常取決于你的方法定義的異常類型。
        你也可以在一個類中實現多個afterThrowing方法。代碼如下:

    package com.wyq.spring.base.aopinstance;

    import org.springframework.aop.ThrowsAdvice;

    /** 
     * 
    @author 作者 
     * 
    @version 創建時間:2009-11-5 下午05:39:17 
     * 類說明 
     
    */
    public class KwikEMartExceptionAdvice implements ThrowsAdvice {
        
    /*
         * 根據拋出異常的類型恰當方法將被調用。注意,除了捕獲和處理異常以外,這些方法都為應用添加了新的行為。
         * 這是因為你無法做到這一點。代理對象捕獲異常并且調用合適的ThrowsAdvice方法,如果有的話。ThrowsAdvice
         * 被執行后,原來的異常繼續被拋出,并且向其他異常一樣被傳播出去。
         
    */
        
    public void afterThrowing(NoMoreSquisheesException e){
            orderMoreSquishees();
        }
        
    public void afterThrowing(CustomerIsBrokeException e){
            showCustomerAtmMachine();
        }
    }

    <?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="kwikEMartTarget" class="com.springinaction.chapter03.store.ApuKwikEMart"></bean>
        
    <!-- 創建通知 -->
        
    <bean id="welcomeAdvice" class="com.springinaction.chapter03.store.WelcomeAdvice"></bean>
        
    <!-- 創建代理對象 -->
        
    <bean id="kwikEMart" class="org.springframework.aop.framework.ProxyFactoryBean">
            
    <!-- 代理類實現的接口 -->
            
    <property name="proxyInterfaces">
                
    <value>com.springinaction.chaper03.store.kwikEMart</value>
            
    </property>
            
    <!-- 要織入的通知 -->
            
    <property name="interceptorNames">
                
    <list>
                    
    <value>welcomeAdvice</value>
                
    </list>
            
    </property>
            
    <!-- 要代理的目標對象 -->
            
    <property name="target">
                
    <ref bean="kwikEMartTarget"/>
            
    </property>
        
    </bean>
    </beans>


        引入通知:引入通知與前面的通知類型有點不同。其他類型的通知是在目標對象的方法被調用的周圍織入。引入通知給目標對象添加新的方法。
        切入點決定了一個特定類的特定方法是否滿足一條特定規則。如果一個方法確實符合,通知就應用到該方法上。Spring的切入點可以讓我們以一種靈活的方式定義在什么地方將通知織入到我們的類中。
        Spring根據需要織入通知的類和方法來定義切入點。Spring的切入點框架的核心接口自然史pointcut.
        public interface Pointcut{
            ClassFilter getClassFilter();//這個接口決定了一個類是否復合通知的要求
        MethodMatcher getMethodMatcher();//方法過濾
        }
    大多數切面是由定義切面行為的通知和定義切面在什么地方執行的切入點組合而成的。Spring認識到這一點,提供了Advisor,

    它把通知和切入點組合到一個對象中。
       public interface PointcutAdvisor{
           Pointcut getPointcut();
        Advice getAdvice();
       }
    大多數Spring自帶的切入點都有一個對應的PointcutAdvisor.這樣方便你在一個地方定義切入點和通知。
    <?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="maidServiceTarget" class="com.springinaction.chapter03.cleaning.MaidServiceImpl"></bean>
        
    <!-- 創建通知 -->
        
    <bean id="frequentCustomerAdvice" class="com.springinaction.chapter03.cleaning.FrequentCustomerAdvicer"></bean>
        
    <!-- 定義切入點 
             使用Namedmethodmatcher可以很清楚的指明哪些方法需要使用通知。然而,對于大型應用系統,把每個需要通知的方法都列出來
             會使配置文件顯得非常冗長。使用通配符可以幫助我們解決這個問題。
             Spring的RegexpMethodPointcut讓你利用正則表達式的力量來定義切入點。這樣你可以使用Perl樣式的正則表達式來定義模式,
             以得到你想要的方法。
             .匹配任何單個字符
             +匹配前一個字符一次或多次
             *匹配前一個字符0次或多次
             \匹配任何正則表達式符號
        
    -->
        
    <bean id="frequentCustomerPointcutAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
            
    <property name="mappedName">
                
    <value>order*</value>
            
    </property>
            
    <property name="advice">
                
    <ref bean="frequentCustomerAdvice"/>
            
    </property>
        
    </bean>
        
    <!-- 如果你想匹配所有setXxx方法,我們需要使用.*set*.模板(第一個通配符匹配任何類名) -->
        
    <bean id="queryPointcutAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
            
    <property name="pattern">
                
    <value>.*get.+By.+</value>
            
    </property>
            
    <property name="advice">
                
    <ref bean="frequentCustomerAdvice"/>
            
    </property>
        
    </bean>
        
    <!-- 定義代理對象 -->
        
    <bean id="maidService" class="org.springframework.aop.framework.ProxyFactoryBean">
            
    <property name="proxyInterfaces">
                
    <value>com.springinaction.chapter03.cleaning.MaidService</value>
            
    </property>
            
    <property name="interceptorNames">
                
    <list>
                    
    <value>frequentCustomerAdvisor</value>
                
    </list>
            
    </property>
            
    <property name="target">
                
    <ref bean="maidServiceTarget"/>
            
    </property>
        
    </bean>
    </beans>


    posted on 2009-11-06 12:29 王永慶 閱讀(214) 評論(0)  編輯  收藏 所屬分類: SPRING
    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    關注blogs

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一区二区三区免费视频网站 | 深夜久久AAAAA级毛片免费看| 嘿嘿嘿视频免费网站在线观看| 亚洲综合一区二区国产精品| 国产三级在线免费| 亚洲综合无码一区二区| 亚洲国产精品免费在线观看| 亚洲日韩中文字幕| 成年免费大片黄在线观看岛国 | 国产伦精品一区二区三区免费下载| 国产亚洲精aa在线看| 女人与禽交视频免费看| 亚洲av永久无码| 亚洲国产一级在线观看| 99精品视频免费| 亚洲国产成人久久综合碰碰动漫3d | 亚洲精品亚洲人成在线播放| 97在线线免费观看视频在线观看| 亚洲综合国产成人丁香五月激情 | 在线观看特色大片免费视频| 自拍偷区亚洲国内自拍| 又粗又硬免费毛片| 国产精品免费久久久久影院| 久久久久亚洲精品无码系列| 97免费人妻无码视频| 国产亚洲精品成人久久网站| 亚洲色精品88色婷婷七月丁香| 99视频在线看观免费| 亚洲人成人伊人成综合网无码| 全黄a免费一级毛片人人爱| 免费一级全黄少妇性色生活片| 亚洲电影国产一区| 永久免费AV无码国产网站| 99亚洲乱人伦aⅴ精品| 九月丁香婷婷亚洲综合色| 91手机看片国产永久免费| 污视频网站在线免费看| 亚洲精品国产成人专区| 国产人成免费视频| 久久国产精品免费观看| 日韩色日韩视频亚洲网站|