spring 切面例子

2021-09-17 21:14:08 字數 3159 閱讀 5945

>

>

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)

}

annotation

description

@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)

@afterreturningreturning返回值,可指定繫結入參名稱,獲取返回值

@afterthrowingthrowing異常資訊,可繫結指定引數名稱,獲取異常資訊

@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切面 注入...