Spring AOP 之AspectJ註解配置

2021-09-02 17:14:03 字數 2829 閱讀 5640

spring aop 之aspectj註解配置

使用jdk**

業務類

package com.tgb.aop;  

public inte***ce usermanager

package com.tgb.aop;

public class usermanagerimpl implements usermanager

return "張三";

} }

advice類

package com.tgb.aop;  

import org.aspectj.lang.joinpoint;

import org.aspectj.lang.proceedingjoinpoint;

import org.aspectj.lang.annotation.after;

import org.aspectj.lang.annotation.afterreturning;

import org.aspectj.lang.annotation.afterthrowing;

import org.aspectj.lang.annotation.around;

import org.aspectj.lang.annotation.aspect;

import org.aspectj.lang.annotation.before;

import org.aspectj.lang.annotation.declareparents;

import org.aspectj.lang.annotation.pointcut;

/**

* 測試after,before,around,throwing,returning advice.

* @author admin

* */

@aspect

public class aspcejadvice ;

/**

* before

* 在核心業務執行前執行,不能阻止核心業務的呼叫。

* @param joinpoint

*/

@before("aspectjmethod()")

public void beforeadvice(joinpoint joinpoint)

/**

* after

* 核心業務邏輯退出後(包括正常執行結束和異常退出),執行此advice

* @param joinpoint

*/

@after(value = "aspectjmethod()")

public void afteradvice(joinpoint joinpoint)

/**

* around

* 手動控制呼叫核心業務邏輯,以及呼叫前和呼叫後的處理,

* * 注意:當核心業務拋異常後,立即退出,轉向afteradvice

* 執行完afteradvice,再轉到throwingadvice

* @param pjp

* @return

* @throws throwable

*/

@around(value = "aspectjmethod()")

public object aroundadvice(proceedingjoinpoint pjp) throws throwable

/**

* afterreturning

* 核心業務邏輯呼叫正常退出後,不管是否有返回值,正常退出後,均執行此advice

* @param joinpoint

*/

@afterreturning(value = "aspectjmethod()", returning = "retval")

public void afterreturningadvice(joinpoint joinpoint, string retval)

/**

* 核心業務邏輯呼叫異常退出後,執行此advice,處理錯誤資訊

* * 注意:執行順序在around advice之後

* @param joinpoint

* @param ex

*/

@afterthrowing(value = "aspectjmethod()", throwing = "ex")

public void afterthrowingadvice(joinpoint joinpoint, exception ex)

}

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

只要將advice類注入到bean,spring會根據切入點,找到相應的連線點切入

測試類

package com.tgb.aop;  

import org.springframework.beans.factory.beanfactory;

public class client catch (illegalargumentexception e)

} }

測試結果

關於Unity中Camera的Aspect

一直以來對camera的aspect和game視窗的aspect都是一知半解,某天從一本書中看到了對camera的api講解,但是總覺得對aspect講解的有問題。於是就認真的思考起了這個問題,還發現設定完cmera.aspect之後,scene視窗的視椎體竟然不同步,也不知其原因。苦惱了很久。經過...

spring aop 之鏈式呼叫

關關雎鳩,在河之洲。窈窕淑女,君子好逑。aop aspect orient programming 我們一般稱為面向方面 切面 程式設計,作為物件導向的一種補充,用於處理系統中分布於各個模組的橫切關注點,比如事務管理 日誌 快取等等。springaop採用的是動態 在執行期間對業務方法進行增強,所以...

spring aop 之鏈式呼叫

關關雎鳩,在河之洲。窈窕淑女,君子好逑。aop aspect orient programming 我們一般稱為面向方面 切面 程式設計,作為物件導向的一種補充,用於處理系統中分布於各個模組的橫切關注點,比如事務管理 日誌 快取等等。springaop採用的是動態 在執行期間對業務方法進行增強,所以...