點點滴滴積累——基於XMLSchema與Annotation的幾種Advice的規則

1.關於before advice: 對於before advice,是最簡單的advice。不管是基於XmlSchema或者是基於Annotation,其advice對應的方法的參數只有一個,即JoinPoint類型的參數。在XmlSchema中其<aop:before.../>標籤中的屬性爲①pointcut-ref或者piointcut②method 在Annotation中,也僅有一個屬性,即pointcut,且這個屬性能夠被省略掉。如:@Before("execution(...)") 2.關於 after-returning advice: after-returning advice就其對應的方法而言,須要分狀況討論。當基於XmlSchema來代理時,其對應方法的參數僅有一個,即JoinPoint類型的參數。而當基於Annotation的時候,其對應方法有兩個參數,一個是JoinPoint型參數,另一個是Object類型的參數(表明返回值)。 在Xml中,其標籤對應的是<aop:after-returning.../>其屬性有①pointcut-ref或者pointcut②method 在Annotation中,有兩個屬性:pointcut與returning。如: @AfterRteturning(pointcut="execution(...)",returning="retVal")這個retVal就是Annotation狀況下Advice對應方法中表明返回值的那個Object類型參數。 3.關於after-throwing advice: after-throwing advice就對應方法來講,不管是基於XML仍是基於Annotation都是具備兩個參數:JoinPoint類型參數,與表明返回異常的Throwable類型參數。在xml中,對應標籤爲<aop:after-returning....>標籤屬性除了pintcut-ref(或者pintcut)與method外,還有一個屬性throwing,其值通常爲throwable。 基於Annotation時,帶有兩個屬性:pointcut與throwing。如:@AfterThrowing(pointcut="execution(...)",throwing="throwable")這個throwable就是對應Annotation裏面方法中的表明拋出異常的那個參數。 這裏的異常類型須要在目標對象的接口中預先定義,異常類型能夠是任何異常類型。 也就是說after returning advice在基於XmlSchema的時候對應方法僅一個參數,而throw advice不管在xmlSchema或者是基於Annotation都是有兩個參數。並且,第二個參數老是要在xml或者Annotation中進行顯示聲明。即throwing=throwable 4.關於around advice around advice是對before advice 與afterreturning advice二者都須要插入對象時的簡化。相似before advice ,比較簡單,這裏不在贅述 另外,使用Annotation,須要引入aspectjweaver.jar
相關文章
相關標籤/搜索