>
>
org.springframeworkgroupid
>
>
spring-contextartifactid
>
>
5.1.6.releaseversion
>
dependency
>
>
>
org.springframeworkgroupid
>
>
spring-aspectsartifactid
>
>
5.1.6.releaseversion
>
dependency
>
public
class
calc
}
@aspect
public
class
calcaspect
@before
("pointcut()"
)public
void
logstart()
@after
("pointcut()"
)public
void
logend()
@afterreturning
(value =
"pointcut()"
, returning =
"result"
)public
void
logreturning
(object result)
@afterthrowing
(value =
"pointcut()"
, throwing =
"exception"
)public
void
logthrowing
(exception exception)
}
annotationdescription
@aspect
標記為切面類
@pointcut
標記被切方法(全稱)
@before
前置通知
@after
後置通知
@afterreturing
返回通知
afterthrowing
異常通知可以全名,也可以簡單方法名稱@after
("pointcut()"
)@after
("com.seconder.calcaspect.pointcut()"
)
直接指定外部方法@after
("execution(public int com.godme.bean.calc.div(int,int))"
)@after
("execution(public int com.godme.bean.calc.*(..))"
)
execution
:關鍵字修飾符及返回值:需宣告修飾符以及返回值型別
方法名稱:方法名可指定,或者
*
全匹配傳入引數: 入參無需形參,但是需標記入參型別,個數需匹配,或者
(..)
全匹配@pointcut
("execution(public int com.godme.bean.calc.*(..))"
)public
void
pointcut()
@pointcut
等價,引入一次,等價之後直接引入本類方法即可。後續
@after
等標記,直接引入本類方法,簡單方便。直接注入@before
("pointcut()"
)public
void
logstart
(joinpoint point)
jointpoint
,通過該引數獲取切點詳細資訊。@afterreturning
(value =
"pointcut()"
, returning =
"result"
)public
void
logreturning
(object result)
@afterthrowing
(value =
"pointcut()"
, throwing =
"exception"
)public
void
logthrowing
(exception exception)
@afterreturning
:returning
返回值,可指定繫結入參名稱,獲取返回值
@afterthrowing
:throwing
異常資訊,可繫結指定引數名稱,獲取異常資訊
@enableaspectjautoproxy
@configuration
public
class
config
@bean
public calcaspect aspect()
}
public
class
main
}
需要通過context
獲取切點類,直接建立切面不生效
使用過程中,嚴格滿足一下條件
依賴包匯入
制定切點和切面
匯入切點和切面
切面功能使能
從ioc
容器中獲取
spring 切面程式設計
spring aop就是乙個同心圓,要執行的方法為圓心,最外層的order最小。從最外層按照aop1 aop2的順序依次執行doaround方法,dobefore方法。然後執行method方法,最後按照aop2 aop1的順序依次執行doafter doafterreturn方法。也就是說對多個ao...
Spring面向切面程式設計
1 面向切面程式設計 aop 的概念 把專案中需要在多處用到的功能,比如日誌 安全和事物等集中到乙個類中處理,而不用在每個需要用到該功能的地方顯式呼叫。2 術語解釋 橫切關注點 分布應用於多處的功能 切面 橫切關注點可以被模組化為乙個類,這個類被稱為乙個切面 通知 advice 切面要完成的工作。s...
Spring的面向切面AOP
aop 面向切面 通知 advice 在什麼時機呼叫該方法 spring提供了5種通知 切點 pointcut 標註需要使用到該通知的方法的位置 切面 aspect 是通知與切點的結合 spring提供了4種各具特色的aop支援 基於 的經典aop aspectj註解驅動的切面 純pojo切面 注入...