1. 程式人生 > >Spring 實戰 七: 宣告切面的兩種方式

Spring 實戰 七: 宣告切面的兩種方式

使用註解

  1. @After
  2. @AfterReturning
  3. @AfterThrowing
  4. @Around
  5. @Before

使用 javaConfig 時需要在配置類上加上 @EnableAspectJAutoProxy 註解,xml 時使用:

環繞通知

image.png
args 限定符,表明床底給 play 方法的 int 型引數也會傳遞到通知中。
image.png
image.png

通過註解引入新功能(新方法)

  1. 通過 spring aop,我們可以為 bean 引入新方法
  2. 當引入介面的方法被呼叫時,代理會把此呼叫委託給實現了介面的某個其他物件
  3. 藉助 aop 引入功能,我們可以不必在設計上妥協或者侵入性的改變現有的實現

@DeclareParents 註解可將新介面引入到現有 bean 中
image.png
value:指明哪種型別的 bean 要引入該介面
defaultImpl:為引入功能提供實現的類
@DeclareParents 註解的成員指明瞭要引入的介面

在 xml 中宣告切面

<aop:advisor>
<aop:after>
<aop:after-returning>
<aop:after-throwing>
<aop:around>
<aop:aspect>
<aop:aspectj-autoproxy
>
<aop:before> <aop:config> 頂層 aop 配置元素,大多數 <aop:*>都為其子屬性 <aop:declare-parents> <aop:pointcut>

image.png