網(wǎng)站首頁 編程語言 正文
今日接到一個(gè)需求,是關(guān)于對(duì)項(xiàng)目的一個(gè)操作記錄,想記錄所有的增刪改查,也就是所有的操作?想想該如何實(shí)現(xiàn)呢?首先肯定就想到了spring的AOP。那么如何能夠更加頁面化呢?如果對(duì)于項(xiàng)目中已經(jīng)使用了swagger,那么利用起來就是一個(gè)很好的方式。最終效果圖如下:
一、AOP及注解
1)何為AOP?
AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù).AOP是OOP的延續(xù),是軟件開發(fā)中的一個(gè)熱點(diǎn),也是Spring框架中的一個(gè)重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用AOP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時(shí)提高了開發(fā)的效率。
2)@Aspect
把當(dāng)前類標(biāo)識(shí)為一個(gè)切面供容器讀取
3)@Around
環(huán)繞增強(qiáng),相當(dāng)于MethodInterceptor
二、swagger及注解
1)何為swagger?
Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。總體目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來始終保持同步。Swagger 讓部署管理和使用功能強(qiáng)大的API從未如此簡單。詳情之前文章
2)@ApiOperation
swagger api注解
@ApiOperation(value = “接口說明”, httpMethod = “接口請(qǐng)求方式”, response = “接口返回參數(shù)類型”, notes = “接口發(fā)布說明”;
還有其他的,詳情可見官方文檔
三、合并使用代碼
使用swagger的主要目的就是中文可視化。就如上圖似的。
/**
* @param joinPoint:
* @Author: TheBigBlue
* @Description: 環(huán)繞通知,攔截controller,輸出請(qǐng)求參數(shù)、響應(yīng)內(nèi)容和響應(yīng)時(shí)間
* @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é)合主要就是取值中文描述部分,其他的主要功能其實(shí)可以完全靠AOP就能完成,哈哈。
原文鏈接:https://blog.csdn.net/huo065000/article/details/125136935
相關(guān)推薦
- 2023-02-12 完美解決Redis在雙擊redis-server.exe出現(xiàn)閃退問題_Redis
- 2023-05-21 python?jinjia2的項(xiàng)目使用_python
- 2022-07-09 Python小技巧練習(xí)分享_python
- 2022-08-10 C++中string字符串分割函數(shù)split()的4種實(shí)現(xiàn)方法_C 語言
- 2021-12-05 判斷網(wǎng)頁時(shí)瀏覽器打開還是釘釘打開
- 2022-08-02 詳解C++中遞增運(yùn)算符重載的實(shí)現(xiàn)_C 語言
- 2022-07-10 fastmock使用-只能模擬get請(qǐng)求
- 2023-01-27 React?useEffect的理解與使用_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支