<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讓你定義在異常發(fā)生時該有什么動作。ThrowsAdvice是一個標(biāo)示接口,它沒有定義任何必須實(shí)現(xiàn)的方法。但

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

    package com.wyq.spring.base.aopinstance;

    import org.springframework.aop.ThrowsAdvice;

    /** 
     * 
    @author 作者 
     * 
    @version 創(chuàng)建時間:2009-11-5 下午05:39:17 
     * 類說明 
     
    */
    public class KwikEMartExceptionAdvice implements ThrowsAdvice {
        
    /*
         * 根據(jù)拋出異常的類型恰當(dāng)方法將被調(diào)用。注意,除了捕獲和處理異常以外,這些方法都為應(yīng)用添加了新的行為。
         * 這是因?yàn)槟銦o法做到這一點(diǎn)。代理對象捕獲異常并且調(diào)用合適的ThrowsAdvice方法,如果有的話。ThrowsAdvice
         * 被執(zhí)行后,原來的異常繼續(xù)被拋出,并且向其他異常一樣被傳播出去。
         
    */
        
    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>
        
    <!-- 創(chuàng)建代理目標(biāo)對象 -->
        
    <bean id="kwikEMartTarget" class="com.springinaction.chapter03.store.ApuKwikEMart"></bean>
        
    <!-- 創(chuàng)建通知 -->
        
    <bean id="welcomeAdvice" class="com.springinaction.chapter03.store.WelcomeAdvice"></bean>
        
    <!-- 創(chuàng)建代理對象 -->
        
    <bean id="kwikEMart" class="org.springframework.aop.framework.ProxyFactoryBean">
            
    <!-- 代理類實(shí)現(xiàn)的接口 -->
            
    <property name="proxyInterfaces">
                
    <value>com.springinaction.chaper03.store.kwikEMart</value>
            
    </property>
            
    <!-- 要織入的通知 -->
            
    <property name="interceptorNames">
                
    <list>
                    
    <value>welcomeAdvice</value>
                
    </list>
            
    </property>
            
    <!-- 要代理的目標(biāo)對象 -->
            
    <property name="target">
                
    <ref bean="kwikEMartTarget"/>
            
    </property>
        
    </bean>
    </beans>


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

    它把通知和切入點(diǎn)組合到一個對象中。
       public interface PointcutAdvisor{
           Pointcut getPointcut();
        Advice getAdvice();
       }
    大多數(shù)Spring自帶的切入點(diǎn)都有一個對應(yīng)的PointcutAdvisor.這樣方便你在一個地方定義切入點(diǎn)和通知。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>
        
    <!-- 創(chuàng)建代理目標(biāo)對象 -->
        
    <bean id="maidServiceTarget" class="com.springinaction.chapter03.cleaning.MaidServiceImpl"></bean>
        
    <!-- 創(chuàng)建通知 -->
        
    <bean id="frequentCustomerAdvice" class="com.springinaction.chapter03.cleaning.FrequentCustomerAdvicer"></bean>
        
    <!-- 定義切入點(diǎn) 
             使用Namedmethodmatcher可以很清楚的指明哪些方法需要使用通知。然而,對于大型應(yīng)用系統(tǒng),把每個需要通知的方法都列出來
             會使配置文件顯得非常冗長。使用通配符可以幫助我們解決這個問題。
             Spring的RegexpMethodPointcut讓你利用正則表達(dá)式的力量來定義切入點(diǎn)。這樣你可以使用Perl樣式的正則表達(dá)式來定義模式,
             以得到你想要的方法。
             .匹配任何單個字符
             +匹配前一個字符一次或多次
             *匹配前一個字符0次或多次
             \匹配任何正則表達(dá)式符號
        
    -->
        
    <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 王永慶 閱讀(212) 評論(0)  編輯  收藏 所屬分類: SPRING
    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    關(guān)注blogs

    搜索

    •  

    最新評論

    • 1.?re: 心中的那個她[未登錄]
    • 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
    • --王永慶
    • 2.?re: 心中的那個她[未登錄]
    • 兄弟,喜歡就大膽去追好了,就是因?yàn)橄矚g才會有不愉快,如果想一輩子沒有這些煩惱,找一個可有可無的人就好了。這種事講的是緣分吧。別人對你好不好其實(shí)不太重要。放開心情就好了。
    • --萍水相逢
    • 3.?re: 心中的那個她
    • 只能同甘不能共苦,就他媽算了吧,程序員也是人啊!我現(xiàn)在也很討厭女的不理解人情。
    • --咖啡妝
    • 4.?re: 難以割舍的那份情感
    • 評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
    • --王永慶
    • 5.?re: 難以割舍的那份情感
    • 評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
    • --隔葉黃鶯

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲最大的成人网站| 亚洲精品乱码久久久久久下载| 亚洲熟妇AV日韩熟妇在线| 亚洲中文无码永久免费| 91亚洲精品麻豆| 四虎永久在线观看免费网站网址| 中文字幕 亚洲 有码 在线| 免费人成在线视频| 性色av极品无码专区亚洲| 日韩免费观看的一级毛片| 污污视频网站免费观看| 国产亚洲日韩在线三区| 久久黄色免费网站| 久久精品国产亚洲av麻豆图片| 成人奭片免费观看| 免费国产va视频永久在线观看| 亚洲日韩国产精品乱| 一级毛片不卡片免费观看| 亚洲丰满熟女一区二区v| 男女交性永久免费视频播放| 成年网站免费入口在线观看| 亚洲国产另类久久久精品黑人| 99精品视频免费观看| 亚洲av无码一区二区三区观看| 国产美女无遮挡免费视频网站 | 亚洲综合区图片小说区| 午夜高清免费在线观看| 一级毛片大全免费播放下载| 亚洲AV无码成人网站久久精品大 | 99亚洲男女激情在线观看| 亚洲最大AV网站在线观看| 最近中文字幕大全免费视频| 国产成人精品日本亚洲18图| 亚洲av午夜精品一区二区三区| 两个人看的www高清免费视频 | 精品国产日韩亚洲一区在线| 亚洲欧洲自拍拍偷午夜色无码| 四虎在线最新永久免费| 一级做受视频免费是看美女| 亚洲精品在线电影| 亚洲中文无韩国r级电影|