SpringAop切面程式設計(一看就會用)

2021-10-06 13:59:37 字數 1998 閱讀 6719

可以在指定的某些類的某些方法的 前後或者 出現異常的時候,動態織入 指定的**

1. aop

aspect object programming  面向切面程式設計

功能: 讓關注點**與業務**分離!

2. 關注點

重複**就叫做關注點;

3. 切面

關注點形成的類,就叫切面(類)!(把很多類中重複的**抽取出來的類,叫切面類)

面向切面程式設計,就是指 對很多功能都有的重複的**抽取,再在執行的時候往業務方法上動態織入「切面類**」。

4. 切入點

執行目標物件方法,動態織入切面**。

可以通過切入點表示式,指定攔截哪些類的哪些方法; 給指定的類或方法在執行的時候植入切面類**。

1. 引入jar包

2. 引入命名空間,開啟aop註解

<?

xmlversion

="1.0"

encoding

="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xmlns:p

=""xmlns:context

=""xmlns:aop=

""xsi:schemalocation="

/spring-beans.xsd

/spring-context.xsd

/spring-aop.xsd"

>

<

context:component-scan

base-package

="cn.shanglin.e_aop_anno"

>

context:component-scan

>

beans

>

3. 定義切面類

@component

//加入ioc容器 @

aspect

// 指定當前類為切面類

,被織入的**

publicclass

aop

// 前置通知 : 在執行目標方法之前執行 @

before

("pointcut_()")

publicvoid

begin()

// 後置/最終通知:在執行目標方法之後執行  【無論是否出現異常最終都會執行】 @

after

("pointcut_()")

publicvoid

after()

/***  環繞通知:環繞目標方式執行,要麼使用@before("pointcut_()")和@after("pointcut_()"),

*  要麼就使用@around("pointcut_()"),兩個功能一樣不要混合使用 */

@around

("pointcut_()")

publicvoid

around(

proceedingjoinpoint

pjp)throws

throwable

// 返回後通知: 在呼叫目標方法結束後執行 【出現異常不執行】 @

afterreturning

("pointcut_()")

publicvoid

afterreturning()

// 異常通知: 當目標方法執行異常時候執行此關注點** @

afterthrowing

("pointcut_()")

publicvoid

afterthrowing() }

Spring aop 切面程式設計

package cn.annals.demo.proc.aop import org.aspectj.lang.joinpoint import org.aspectj.lang.proceedingjoinpoint import org.aspectj.lang.annotation.after...

Spring AOP切面程式設計

切面表示式 execution 修飾符 返回值型別 包.類.方法 引數列表 1 完全寫法 execution public void com.syy.xml aop.userimpl.work int 2 修飾符省略 execution void com.syy.xml aop.userimpl.w...

Spring AOP 面向切面程式設計

spring aop aop aspect orient programming 也就是面向切面程式設計 可以這樣理解,物件導向程式設計 oop 是從靜態角度考慮程式結構,面向切面程式設計 aop 是從動態角度考慮程式執行過程。在日常生活中,會遇到各種各樣的中介機構,比如獵頭公司,律師事務所,婚姻介...