jinfeng_wang

          G-G-S,D-D-U!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

           

          1、  around advice:所有around advice必須實(shí)現(xiàn)MethodInterceptor接口,注意invoke方法的參數(shù)invocationMethodInvocation接口,在此中包含了許多信息,包括其所封裝的方法及其參數(shù),AOP proxyJointcut等。

          public interface MethodInterceptor extends Interceptor {

                            Object invoke(MethodInvocation invocation) throws Throwable;

          }

              在實(shí)現(xiàn)around advice時(shí),和before adviceafter advice有著兩個(gè)很大的區(qū)別:1、必須在invoke方法中調(diào)用MethodInvocation.proceed(),這樣才能將所有調(diào)用延續(xù)下去,調(diào)用target對(duì)象的method2、必須自己返回一個(gè)object,該object甚至可以與target’s method的返回值不一樣。

           

          2、  before advice:在jointcut執(zhí)行之前,運(yùn)行advice。必須實(shí)現(xiàn)MethodBeforeAdvice接口。

          public interface MethodBeforeAdvice extends BeforeAdvice {

              void before(Method m, Object[] args, Object target) throws Throwable;

          }

          3、  after advice:在jointcut執(zhí)行之后,運(yùn)行advice。必須實(shí)現(xiàn)AfterReturningAdvice接口。

          public interface AfterReturningAdvice extends Advice {

              void afterReturning(Object returnValue, Method m, Object[] args, Object target)

                      throws Throwable;

          }

          4、  throws advice:在jointcut執(zhí)行出現(xiàn)異常的時(shí)候,運(yùn)行此advice。必須實(shí)現(xiàn)ThrowsAdvice接口。但是此接口只是一個(gè)標(biāo)識(shí)接口,必須實(shí)現(xiàn)此外實(shí)現(xiàn)下面的方法: 

          afterThrowing([Method], [args], [target], subclassOfThrowable)

             此外,在jointcut出現(xiàn)異常時(shí),具體調(diào)用哪個(gè)afterThrowing方法,這就涉及到類型判別,最符合類型判別的將會(huì)被調(diào)用。
          posted on 2005-03-02 17:31 jinfeng_wang 閱讀(1186) 評(píng)論(0)  編輯  收藏 所屬分類: spring
          主站蜘蛛池模板: 湘潭市| 连云港市| 莎车县| 香河县| 巫溪县| 霸州市| 漠河县| 泸溪县| 兖州市| 工布江达县| 德格县| 莱阳市| 常熟市| 伊通| 郁南县| 方正县| 汉阴县| 公安县| 隆化县| 珠海市| 马边| 洪泽县| 保康县| 和平县| 和静县| 顺义区| 启东市| 开化县| 德州市| 文登市| 万安县| 永川市| 安多县| 昭苏县| 博湖县| 红河县| 郑州市| 湖北省| 奉新县| 清徐县| 宾川县|