自定義註解

2022-01-12 08:20:56 字數 1029 閱讀 8123

目標:將各個類及各個方法進行區分模組、區分方法操作型別,把方法內的操作記錄到日誌。

這篇也算是自定義註解的乙個應用場景。

大致掃一眼吧

說到切面,聯想到專案中依賴了第三方的jar包,可是由於業務需求,需要對其中某個特定方法進行修改(或者說壓根不用它們的方法,完全按自己的業務邏輯來)。

與上面@before、@after等不同的是,這裡用到了@around,雖然是@around,但只是走的自己業務邏輯**。

是否走原**的關鍵在於使用@around註解時的

proceedingjoinpoint.proceed();
@around註解使用時需要注意一點就是,環繞通知不能改變原方法的返回值,切面方法需要有返回值來代替原方法的返回值,**大致如下:

/*

* * 使用 aop @around後無返回值問題:

* 環繞通知不能改變原方法的返回值,切面方法需要有返回值來代替原方法的返回值

** @param proceedingjoinpoint

*/@around(

"logadvicepointcut()")

public

object doaround(proceedingjoinpoint proceedingjoinpoint)

catch

(throwable throwable)

return

null

; }

在使用切面時,發現只有public方法才有效,private不行,難道說spring的aop只能切public?

如果是那也太撈了,前輩們在設計之初就考慮到這個問題了,驗證aop不僅能切public,連private也能切:

blablabla。。。

自定義註解

target elementtype.field retention retentionpolicy.runtime public inte ce setvalue以上就是乙個自定義的註解,下面來進行說明。target elementtype.field 表示支援該註解的程式元素,field就是屬性...

自定義註解

三個重要元註解 target 即註解的作用域,用於說明註解的使用範圍 即註解可以用在什麼地方,比如類的註解,方法註解,成員變數註解等等 elemenettype.constructor 構造器宣告 elemenettype.field 域宣告 包括 enum 例項 elemenettype.loca...

自定義註解

三個重要元註解 target 即註解的作用域,用於說明註解的使用範圍 即註解可以用在什麼地方,比如類的註解,方法註解,成員變數註解等等 elemenettype.constructor 構造器宣告 elemenettype.field 域宣告 包括 enum 例項 elemenettype.loca...