網(wǎng)站首頁 編程語言 正文
今日接到一個需求,是關(guān)于對項目的一個操作記錄,想記錄所有的增刪改查,也就是所有的操作?想想該如何實現(xiàn)呢?首先肯定就想到了spring的AOP。那么如何能夠更加頁面化呢?如果對于項目中已經(jīng)使用了swagger,那么利用起來就是一個很好的方式。最終效果圖如下:
一、AOP及注解
1)何為AOP?
AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù).AOP是OOP的延續(xù),是軟件開發(fā)中的一個熱點,也是Spring框架中的一個重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用AOP可以對業(yè)務邏輯的各個部分進行隔離,從而使得業(yè)務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發(fā)的效率。
2)@Aspect
把當前類標識為一個切面供容器讀取
3)@Around
環(huán)繞增強,相當于MethodInterceptor
二、swagger及注解
1)何為swagger?
Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務器端的代碼,允許API來始終保持同步。Swagger 讓部署管理和使用功能強大的API從未如此簡單。詳情之前文章
2)@ApiOperation
swagger api注解
@ApiOperation(value = “接口說明”, httpMethod = “接口請求方式”, response = “接口返回參數(shù)類型”, notes = “接口發(fā)布說明”;
還有其他的,詳情可見官方文檔
三、合并使用代碼
使用swagger的主要目的就是中文可視化。就如上圖似的。
/**
* @param joinPoint:
* @Author: TheBigBlue
* @Description: 環(huán)繞通知,攔截controller,輸出請求參數(shù)、響應內(nèi)容和響應時間
* @Date: 2019/6/17
* @Return:
**/
@Around(executeExpr)
public Object processLog(ProceedingJoinPoint joinPoint) throws Exception {
SysOperLog sysOperLog = new SysOperLog();
Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
//獲取方法名稱
String methodName = method.getName();
//獲取參數(shù)
Object[] argsInfo = joinPoint.getArgs();
if (method.isAnnotationPresent(ApiOperation.class)) {
//獲取swagger上的方法說明信息
ApiOperation apiOperation = method.getAnnotation(ApiOperation.class);
sysOperLog.setTitle(apiOperation.value());
...省略無數(shù),其他可以直接通過aop獲取
}
兩者結(jié)合主要就是取值中文描述部分,其他的主要功能其實可以完全靠AOP就能完成,哈哈。
原文鏈接:https://blog.csdn.net/huo065000/article/details/125136935
相關(guān)推薦
- 2022-05-10 thymeleaf跳轉(zhuǎn)到響應頁面(modelandview 中的view)
- 2022-08-19 insert語句返回新增主鍵id失敗的解決方法
- 2023-01-12 python數(shù)據(jù)擬合之scipy.optimize.curve_fit解讀_python
- 2022-07-23 C語言詳解用char實現(xiàn)大小寫字母的轉(zhuǎn)換_C 語言
- 2022-07-16 new FileOutputStream(“data\\test2.txt“,true),true是
- 2022-04-18 C#繪制餅狀圖和柱狀圖的方法_C#教程
- 2022-06-04 C#復雜XML反序列化為實體對象兩種方式小結(jié)_C#教程
- 2022-04-22 小程序和網(wǎng)站中無限滾動的實現(xiàn)
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支