Spring Aop實現方式(註解和Xml)

2022-07-08 14:24:27 字數 2629 閱讀 4025

aop:指程式執行期間動態的將某段**切入到指定方法指定位置進行執行的程式設計方式。

基於註解的aop 實現步驟:

1、匯入aop模組;spring aop:(spring-aspects)

2、定義乙個業務邏輯類(userserviceimpl);在業務邏輯執行的時候將日誌進行列印包括在(方法執行的之前,執行結束,執行異常等)

3、定義乙個日誌切面類(logaspect):切面類裡面的方法需要動態感知userserviceimpl執行到**然後執行;

通知方法:

前置通知(``@before``):logstart:在目標方法執行之前執行

後置通知(``@after``):logend:在目標方法執行結束之後執行(無論方法正常結束還是異常結束)

返回通知(``@afterreturning``):logreturn:在目標方法正常返回之後執行

異常通知(``@afterthrowing``):logexception:在目標方法出現異常以後執行

環繞通知(``@around``):動態**,手動推進目標方法執行。

4、給切面類的目標方法標註何時何地執行(通知註解);

5、將切面類和業務邏輯類(目標方法所在類)都加入到容器中;

6、必須告訴spring哪個類是切面類(@aspect)

7、給配置類中加 @enableaspectjautoproxy

aop 的註解**實現:

匯入spring-aspects的jar包:

org.springframework

spring-aspects

5.2.1.release

業務類(userserviceimpl)

public class userserviceimpl 

}

在定義切面之前我們說一下aspectj切入點語法定義在我們使用spring框架配置aop的時候,不管是通過xml配置檔案還是註解的方式都需要定義切入點(pointcut)。

例如定義切入點表示式 execution ( zfcoding.service..*.*(..))*

execution()是最常用的切點函式,其語法如下所示:

整個表示式可以分為五個部分:

切面類(logaspect)

@aspect

public class logaspect

@before("pointcut()")

public void logstart()

@after("pointcut()")

public void logend()

@afterreturning("pointcut()")

public void logreturn()

@afterthrowing("pointcut()")

public void logexception()

}

將業務類和切面類注入到spring容器當中,使用@enableaspectjautoproxy開啟註解的aop 功能

@configuration  //配置類

@enableaspectjautoproxy //開啟註解的aop 功能

public class myconfigaspect

@bean

public logaspect logaspect()

}

測試類:

public class aspecttest 

}

執行結果:

登入開始通知

使用者登入成功~~~~~~~

登入結束通知

返回通知

註解實現aop 小結

基於xml的aop 的實現步驟

首先需要也是需要定義乙個業務類和乙個配置類,然後定義乙個配置類,配置類實現的功能主要是將業務類和切面類注入到spring容器當中,定義一些切面的配置。

基於xml的aop **實現:

業務類和上面註解實現一樣,同上

切面類

public class logaspectxml 

public void logend()

public void logreturn()

public void logexception()

}

配置類:

<?xml version="1.0" encoding="utf-8"?>

測試類

public class aspecttestxml 

}

執行結果

登入開始通知

使用者登入成功~~~~~~~

登入結束通知

返回通知

xml 實現aop 小結

springAOP 註解方式

package com.zf.aspect import org.aspectj.lang.joinpoint import org.aspectj.lang.proceedingjoinpoint import org.aspectj.lang.annotation.afterreturning ...

springAop的配置註解方式實現

前面一篇是xml實現的,現在用註解方式實現一下,測試類還是原來的,xml的配置中多餘的部分這裡就不在貼出來了。xml version 1.0 encoding utf 8 beans xmlns xmlns context xmlns xsi xmlns aop xsi schemalocation...

SpringAop註解實現

該簡單例子實現方法的前置增強列印日誌,簡單的來說就是在呼叫某個方法之前會呼叫另乙個方法 普通類 calculator component public class calculator public int sub int i,int j public int mul int i,int j pub...