一、spring基於註解aop配置
1. 假設建立乙個accountservice需要增強(執行其中每乙個方法都會加乙個記錄日誌的方法),則再建立乙個日誌類實現記錄日誌方法;
//將該類注入spring容器
@component("logger")
@aspect
//表示當前類是乙個切面類
public
class
logger
/*** 前置通知
*/@before("pt1()")
public
void
beforeprintlog()
/*** 後置通知
*/@afterreturning("pt1()")
public
void
afterreturningprintlog()
/*** 異常通知
*/@afterthrowing("pt1()")
public
void
afterthrowingprintlog()
/*** 最終通知
*/@after("pt1()")
public
void
afterprintlog()
/*** 環繞通知
*問題:
* 當我們配置環繞通知之後,切入點方法沒有執行,而是通知方法執行
*分析:
* 動態**中的環繞通知 有明確的切入點方法的呼叫,而我們的沒有
*解決:
* spring提供乙個介面:proceedingjoinpoint,該介面的proceed()方法相當於明確呼叫切入點方法
* 該介面可以作為環繞通知的方法引數,在程式執行時,spring框架中為我們提供介面的實現類供我們使用
* sprig的環繞通知
* 可以在**中手動控制增強方法何時執行的方式
*///
@around("pt1()")
public
object aroundprintlog(proceedingjoinpoint pjp)
catch
(throwable t)
finally
}}
@service("accountservice")public
class accountserviceimpl implements
iaccountservice
public
void updateaccount(int
i)
public
intdeleteaccount()
}
2.配置開啟註解
<
context:component-scan
base-package
="com.li"
>
context:component-scan
>
<
aop:aspectj-autoproxy
>
aop:aspectj-autoproxy
>
spring使用註解配置AOP 基於Aspect
需要先了解使用配置檔案配置aop的方法 spring不會自動去尋找註解,必須要告訴那些包下的類中可能有助解,需要使用context命名空間,用來掃瞄註解。component public class demo 1 預設為類名首字母小寫,即demo,若想換,則可 component 自定義名稱 2 c...
Spring 基於註解的AOP
用於記錄日誌的工具類,它裡面提供了公共的 component logger aspect 表示當前類是乙個切面類 public class logger 前置通知 before pt1 public void beforeprintlog 後置通知 afterreturning pt1 public...
Spring5(12) 基於註解的AOP配置
service accountservice public class accountserviceimpl implements iaccountservice override public void updateaccount int i override public intdeleteac...