自定義註解 springAop實現引數的分組驗證

2021-08-20 00:11:25 字數 1894 閱讀 9971

#問題引入

在日常開發中免不了對傳入的引數進行校驗,例如更新資料的時候id不能為空,新增資料的時候某個元素不能為空等。我們不得不寫類似於下面的**:

public object createstudent( student student)

return student;

}public object updatestudent( student student)

return student;

}這樣確實有很多重複的**,於是就想著去解決,我把問題簡化為下面的小demo,以供參考。

#專案結構

#定義註解用於分組

@target()

@retention(retentionpolicy.runtime)

@documented

public @inte***ce validate

;}

#定義兩個組

public inte***ce create 

public inte***ce update

#具體邏輯實現(重點)

@component // 加入到ioc容器

@aspect // 指定當前類為切面類

public class aop

@around("pointcut()")

public object around(proceedingjoinpoint joinpoint) throws throwable }}

} return joinpoint.proceed();

} public listbeanvalidator(object object, class>... groups)

return list;

} return null;

}}

原理,利用aop獲取獲取註解上的分組資訊與當前引數,然後用validator進行校驗。

#實體類

public class student )

@size(min = 3, max = 20, message = "id長度只能在3-20之間", groups = )

private string id;

@notnull(message = "姓名不能為空", groups = )

private string name;

private string age;

/**get set省略**/

}

#錯誤資訊封裝

public class violationmessage implements serializable
#controller類

請求2:

spring aop 自定義註解實現操作日誌記錄

1,spring配置檔案 2,日誌攔截類 public class logaspect catch throwable e finally return retval private void insertopertlog proceedingjoinpoint jp,stopwatch stopw...

Spring AOP 結合自定義註解的使用

1,宣告自定義註解,這裡的key 為要攔截的方法中的方法體對應的變數名,可以參考第3點.2,建立乙個切面類,annatation 中的comment 為方法引數體中的註解對應的變數名 3,在要攔截的方法上加入定義好的註解,其中 comment使用的是spel表示式.spel表示式工具類 packag...

Spring Aop加自定義註解實現許可權管理

在專案中,spring aop 可以對類,方法的執行進行一些加工,本文使用spring aop 加自定義註解來實現許可權管理。思路 當乙個請求請求某個controller層的方法時,會被aop提前攔截處理,看該方法上指定註解的值該登入使用者是否有許可權訪問,有則放行,無則直接返回。核心 config...