Spring之Aop的註解配置

2021-09-25 17:44:42 字數 1837 閱讀 4224

1.首先要新增jar包

2.寫方法介面

public inte***ce calculate

3.寫方法的實現類,並把其加入到ioc容器中去

@component

public class calculateimpl implements calculate

public int sub(int i, int j)

public int mul(int i , int j)

public int div(int i,int j)

}4.寫切面,首先要把這個類加入到ioc容器中去,其次利用@aspect宣告它為切面。

定義所想執行的方法,在calculateimpl方法實現的相應位置加上通知。

在同乙個連線點上應用不止乙個切面時, 除非明確指定, 否則它們的優先順序是不確定的,這時候可利用@order()註解來設定優先順序,數字越小,優先順序越高。

@before: 前置通知, 在方法執行之前執行

@after: 後置通知, 在方法執行之後執行

@afterrunning: 返回通知, 在方法返回結果之後執行

@afterthrowing: 異常通知, 在方法丟擲異常之後

@around: 環繞通知, 圍繞著方法執行

@component

@aspect

public class ******aspect

@before("pointcut()")

public void before(joinpoint joinpoint)

//在後置通知中還不能訪問返回的結果

@after("pointcut()")

public void after(joinpoint joinpoint)

//在返回通知中能訪問返回的結果。在返回通知中, 只要將 returning 屬性新增到 @afterreturning 註解中, 就可以訪問連線點的返回值. 該屬性的值即為用來傳入返回值的引數名稱. 必須在通知方法的簽名中新增乙個同名引數. 在執行時, spring aop 會通過這個引數傳遞返回值.

@afterreturning(value = "pointcut()", returning = "result")

public void afterreturning(joinpoint joinpoint, object result)

//在出現制定異常的時候可以執行相應的**

@afterthrowing(value = "pointcut()", throwing = "error")

public void afterthrowing(joinpoint jp, throwable error)

/** 環繞通知是所有通知型別中功能最為強大的, 能夠全面地控制連線點. 甚至可以控制是否執行連線點

* 環繞通知需要攜帶proceedingjoinpoint型別的引數

* proceedingjoinpoint型別的引數可以決定是否執行該方法

* 環繞通知必須有返回值,返回值為目標方法的返回值, 否則會出現空指標異常

*/@around("pointcut()")

public object around(proceedingjoinpoint pjp) catch (throwable ex)

//後置通知

system.out.println(methoname+"around end");

return result;}}

5.在配置檔案中進行設定,並加入aop的命名空間namespaces

Spring五 AOP之使用註解配置

aop使用註解配置流程 1 當spring容器啟動時候。context component scan base package cn.itheima03.spring.aop.annotation context component scan 2 在上面的包及子包中查詢全部的類,依照類掃瞄註解的機制...

Spring 使用註解配置AOP

1.配置切點 切點 component預設是類名首字母小寫,也可以寫成 component demo123 進行自定義 author barrylee 2018年11月14日 上午8 50 51 component demo123 public class demo 2.配置通知 通知 compon...

Spring基於註解AOP配置

一 spring基於註解aop配置 1.假設建立乙個accountservice需要增強 執行其中每乙個方法都會加乙個記錄日誌的方法 則再建立乙個日誌類實現記錄日誌方法 將該類注入spring容器 component logger aspect 表示當前類是乙個切面類 public class lo...