激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot日志注解與緩存優化詳解

SpringBoot日志注解與緩存優化詳解

2022-02-21 13:24xbhog Java教程

這篇文章主要給大家介紹了關于SpringBoot日志注解與緩存優化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

日志注解:

關于SpringBoot中的日志處理,在之前的文章中頁寫過:

點擊進入

這次通過注解+Aop的方式來實現日志的輸出;

首先需要定義一個注解類:

?
1
2
3
4
5
6
7
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface LogAnnotation {
     String module() default "";  //模塊名
     String operation() default ""; //操作名
 }

然后定義切點:

?
1
2
3
4
 //定義切點
 @Pointcut("@annotation(com.xbhog.springbootvueblog.common.aop.LogAnnotation)")
 public void logPointCut() {
 }

白話文就是,注解所到之處都是切點;比較專業的解釋的話可以自行百度或者Google;

有了切點,那么我們需要實現通知事件,這里采用了環繞通知,也就是前后都會增強。

?
1
2
3
4
5
6
7
8
9
10
11
12
 //環繞  處理流之前 和之后
 @Around("logPointCut()")
 public Object around(ProceedingJoinPoint point) throws Throwable {
     long beginTime = System.currentTimeMillis();
     //執行方法
     Object result = point.proceed();
     //執行時長(毫秒)
     long time = System.currentTimeMillis() - beginTime;
     //保存日志
     recordLog(point, time);
     return result;
 }

point.proceed()就是注解下所需要執行的方法;類似于下面代碼段:

?
1
2
3
4
 @LogAnnotation(module = "listArticle", operation = "顯示主頁展示數據")
 public Result listArticle(@RequestBody PageParams pageParams) {
     return articleService.listArticle(pageParams);
 }

然后我們需要設置日志輸出的信息(recordLog),這里我們通過反射來獲得相應的類名和方法名以及其他信息等。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private void recordLog(ProceedingJoinPoint joinPoint, long time) {
    MethodSignature signature = (MethodSignature) joinPoint.getSignature();
    Method method = signature.getMethod();
    LogAnnotation logAnnotation = method.getAnnotation(LogAnnotation.class);
    log.info("=====================log start================================");
    log.info("module:{}",logAnnotation.module());
    log.info("operation:{}",logAnnotation.operation());
?
    //請求的方法名
    String className = joinPoint.getTarget().getClass().getName();
    String methodName = signature.getName();
    log.info("request method:{}",className + "." + methodName + "()");
?
    //請求的參數
    Object[] args = joinPoint.getArgs();
    String params = JSON.toJSONString(args[0]);
    log.info("params:{}",params);
?
    //獲取request 設置IP地址
    HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
    log.info("ip:{}", IpUtils.getIpAddr(request));
?
?
    log.info("excute time : {} ms",time);
    log.info("=====================log end================================");
}

這樣切點和切面已經完成了,使用的時候只需要在方法的上面直接加注解就可以獲得對應的方法的日志信息,這樣在上線的時候遇到報錯直接就可以定位到了。

緩存的優化:

這個是在具體的項目中實現的,流程大體跟上面的實現類似,使用的也是注解實現的。

為什么需要使用緩存來提高網頁內容的訪問效率,因為內存的讀取比硬盤讀取的速度快的多的多,這樣對用戶的體驗比較好,但是不是所有的數據都得放到緩存中,因為內存比磁盤貴的多,所以對哪些數據進行緩存能使得用戶和服務器均衡也需要一定的經驗。

Cache注解:

?
1
2
3
4
5
6
7
 @Target({ElementType.METHOD})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface Cache {
     long expire() default 1 * 60 * 1000;  //存活時間
     String name() default "";  //緩存的名字
 }

這里設置了數據的存活時間和名字,使得數據在一定的時間里可以在內存中讀取數據。

接下來看下緩存的AOP實現:

直接來看下環繞通知的處理流程:

SpringBoot日志注解與緩存優化詳解

根據圖示,首先獲取類名和調用的方法名,然后設置兩個數組,一個保存參數類型一個保存參數。

遍歷參數,將其轉換成字符串,然后判斷字符串參數(params)為不為空,不為空的話,加密當前字符串參數,將當前的加密的密碼保存到Redis中,每次進入該切面的時候,需要判斷RedisValue是否為空,如果為空的話,那么需要執行注解

下面的方法,如果不為空的話,直接從Redis中直接讀取數據顯示到前臺上。

通過日志Aop與緩存Aop的功能操作,實現效果如下:

SpringBoot日志注解與緩存優化詳解

總結

到此這篇關于SpringBoot日志注解與緩存優化的文章就介紹到這了,更多相關SpringBoot日志注解與緩存優化內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/7019632102953992228

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品区 | 久夜草| 欧美人一级淫片a免费播放 久久99精品久久久久久园产越南 | 亚洲成人免费视频在线 | 国产视频在线观看一区二区三区 | 永久免费av片在线观看全网站 | 国产91一区二区三区 | 日本一道aⅴ不卡免费播放 视屏一区 | 欧美成人精品h版在线观看 在线2区 | 中国洗澡偷拍在线播放 | 国产九色在线观看 | av电影网站在线 | 性爱视频在线免费 | 成人一级视频在线观看 | 91 免费看片 | 偷偷操偷偷操 | 刘亦菲一区二区三区免费看 | 巨根插入 | 销魂美女一区二区 | 在线a视频| 色玖玖综合 | 成人精品 | 久草在线视频福利 | 曰韩av在线 | 偿还的影视高清在线观看 | 女人裸体让男人桶全过程 | 看91| 亚洲欧美一区二区三区在线观看 | 久久亚洲激情 | 欧美一区二区片 | 日韩欧美视频一区二区三区 | 天天色图片 | 精品日韩欧美 | 一本色道久久99精品综合蜜臀 | 欧美精品videos | 成人性生活视频 | 欧美毛片 | 性欧美极品xxxx欧美一区二区 | 日本教室三级在线看 | jizzyouxxxx | 日韩在线视频免费观看 |