<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

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: jizz日本免费| 国产又大又长又粗又硬的免费视频| 国产精品jizz在线观看免费| 456亚洲人成在线播放网站| 亚洲毛片免费视频| 亚洲国产精品网站久久| 免费毛片a在线观看67194| 亚洲人成日本在线观看| 成年女人毛片免费观看97| 亚洲欧美综合精品成人导航| 日韩在线免费播放| 日本中文字幕免费看| 亚洲日韩精品A∨片无码| 日韩免费在线视频| 亚洲精品一卡2卡3卡三卡四卡| 久久久久久久岛国免费播放| 亚洲国产国产综合一区首页| 嫩草在线视频www免费观看| 亚洲av永久无码精品表情包| A片在线免费观看| 免费国产美女爽到喷出水来视频| 亚洲一卡2卡4卡5卡6卡在线99| 99久久久国产精品免费牛牛四川| 亚洲精品国产成人影院| 亚洲精品久久无码av片俺去也| 成人免费视频一区二区三区| 亚洲无mate20pro麻豆| 黄网址在线永久免费观看| 亚洲中文字幕无码中文字| 久久精品女人天堂AV免费观看| 亚洲精品成人图区| 97无码免费人妻超级碰碰碰碰 | 91在线亚洲精品专区| 精品一区二区三区免费毛片爱| 亚洲最大在线观看| 无码中文字幕av免费放| 美女一级毛片免费观看| 国产亚洲老熟女视频| 99精品视频在线观看免费播放| 亚洲一区在线视频| 国产伦一区二区三区免费 |