日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AOP实现Controller参数日志

發布時間:2025/4/16 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AOP实现Controller参数日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.jie.common;import java.lang.annotation.*;/*** @author wuchunjie* @date 2018/2/23*/ @Retention(RetentionPolicy.RUNTIME)//注解會在class中存在,運行時可通過反射獲取 @Target(ElementType.METHOD)//目標是方法 @Documented//文檔生成時,該注解將被包含在javadoc中,可去掉 public @interface OperationLogger {/*** 模塊名字*/String modelName() default "";/*** 操作類型*/String option(); } package com.jie.common;import org.apache.log4j.Logger; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.*; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; import java.lang.reflect.Method;/*** @author wuchunjie* @date 2018/2/23*/ @Aspect @Component public class SysLogAspect {private static final Logger logger = Logger.getLogger(SysLogAspect.class);/*** 定義Pointcut,Pointcut的名稱,此方法不能有返回值,該方法只是一個標示*/@Pointcut("@annotation(com.jie.common.OperationLogger)")public void controllerAspect(){System.out.println("我是一個切入點");}/*** 前置通知(Before advice) :在某連接點(JoinPoint)之前執行的通知,但這個通知不能阻止連接點前的執行。* @param joinPoint*/@Before("controllerAspect()")public void doBefore(JoinPoint joinPoint){System.out.println("=====SysLogAspect前置通知開始=====");//handleLog(joinPoint, null);}/*** 后通知(After advice) :當某連接點退出的時候執行的通知(不論是正常返回還是異常退出)。* @param joinPoint*/@AfterReturning(pointcut = "controllerAspect()")public void doAfter(JoinPoint joinPoint){System.out.println("=====SysLogAspect后置通知開始=====");//handleLog(joinPoint, null);}/*** 拋出異常后通知(After throwing advice) : 在方法拋出異常退出時執行的通知。* @param joinPoint* @param e*/@AfterThrowing(value = "controllerAspect()", throwing = "e")public void doAfter(JoinPoint joinPoint, Exception e){System.out.println("=====SysLogAspect異常通知開始=====");//handleLog(joinPoint, e);}/*** 環繞通知(Around advice) :包圍一個連接點的通知,類似Web中Servlet規范中的Filter的doFilter方法??梢栽诜椒ǖ恼{用前后完成自定義的行為,也可以選擇不執行。* @param joinPoint*/@Around("controllerAspect()")public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable{System.out.println("=====SysLogAspect 環繞通知開始=====");//handleLog(joinPoint, null);Object obj= joinPoint.proceed();System.out.println("=====SysLogAspect 環繞通知結束=====");return obj;}/*** 日志處理** @param joinPoint* @param e*/private void handleLog(JoinPoint joinPoint, Exception e){try{//獲得注解OperationLogger logger = giveController(joinPoint);if (logger == null){return;}String signature = joinPoint.getSignature().toString(); // 獲取目標方法簽名String methodName = signature.substring(signature.lastIndexOf(".") + 1,signature.indexOf("("));String longTemp = joinPoint.getStaticPart().toLongString();String classType = joinPoint.getTarget().getClass().getName();Class<?> clazz = Class.forName(classType);Method[] methods = clazz.getDeclaredMethods();System.out.println("methodName: " + methodName);for (Method method : methods){if (method.isAnnotationPresent(OperationLogger.class)&& method.getName().equals(methodName)){//OpLogger logger = method.getAnnotation(OpLogger.class);String clazzName = clazz.getName();System.out.println("clazzName: " + clazzName + ", methodName: "+ methodName);}}} catch (Exception exp){logger.error("異常信息:{}", exp);exp.printStackTrace();}}/*** 獲得注解* @param joinPoint* @return* @throws Exception*/private static OperationLogger giveController(JoinPoint joinPoint) throws Exception{Signature signature = joinPoint.getSignature();MethodSignature methodSignature = (MethodSignature) signature;Method method = methodSignature.getMethod();if (method != null){return method.getAnnotation(OperationLogger.class);}return null;}}

spring-mvc.xml

<!-- 1、配置映射器與適配器 --> <mvc:annotation-driven></mvc:annotation-driven> <!-- aop --> <bean id="logService" class="com.jie.common.SysLogAspect"></bean> <!-- 開啟切面編程功能 --> <aop:aspectj-autoproxy proxy-target-class="true"/>

切到controller的參數之后,將pojo直接反序列化為參數保存到數據庫中即可

轉載于:https://my.oschina.net/wugong/blog/1632553

總結

以上是生活随笔為你收集整理的AOP实现Controller参数日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人人插人人草 | 香蕉网av| 亚洲一区二区视频在线播放 | 免费av视屏| 看特级毛片 | 久久这里只有精品久久 | 日本不卡视频一区二区三区 | 男人天堂网在线观看 | 中国一级片黄色一级片黄 | 国产又黄又粗又猛又爽视频 | 婷婷综合一区 | 综合一区二区三区 | 中文一二区 | 精品一区二区三区免费 | 国产精品二区在线观看 | 粗大的内捧猛烈进出视频 | 6090伦理 | 91视频论坛 | 初尝人妻少妇中文字幕 | 亚洲2022国产成人精品无码区 | 精品视频一区二区三区四区五区 | 色婷婷777777仙踪林 | www.四虎.| 国产福利视频在线 | 色婷婷九月 | 中文字幕在线网址 | 丁香六月欧美 | 亚洲淫欲| 亚洲精品天天 | 男人用嘴添女人下身免费视频 | 日韩福利电影在线观看 | 丁香婷婷色 | 天天插综合 | 在线看欧美| 久久久久国产精品国产 | 成人av免费播放 | 欧美一区二区在线免费观看 | 国产传媒一区二区三区 | 秋霞电影网一区二区 | 久草国产在线 | 午夜精品久久久久久久久久久久 | 欧美日韩精品一区二区在线观看 | 欧美顶级黄色大片免费 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 在线视频国产一区 | 天堂色av | 久久久久久久久久久久久久久 | 午夜一二三区 | 黑人玩弄人妻一区二区三区免费看 | 91精品视频在线免费观看 | 一级黄色大片视频 | 一二三区免费 | 黄色特一级 | 91插插插影库永久免费 | 黄页网站免费在线观看 | 青青自拍视频 | av射进来 | 在线免费看黄色 | 免费看的毛片 | 黄色片网站在线 | 三级艳丽杨钰莹三级 | 精品人妻一区二区三区四区五区 | 99热在线免费观看 | 你懂的在线观看网址 | 依依成人综合 | 91精品国产aⅴ一区二区 | 国产精品入口麻豆九色 | 日韩精品一区二区三区视频 | 国产精品九九热 | 亚洲精品乱码久久久久久麻豆不卡 | 欧美呦交 | 精品国产一区二区三区性色 | 久久午夜精品人妻一区二区三区 | 少妇被躁爽到高潮无码文 | 成人在线激情网 | 国产精品粉嫩 | 黄色动漫在线免费观看 | 国产精品xxx在线观看 | 日韩精品久久久久久久的张开腿让 | 亚欧在线播放 | 天天干夜操 | 写真福利片hd在线播放 | 18禁免费观看网站 | 亚洲精品视频一二三区 | 国产一区二区三区免费看 | 国产精品夜夜嗨 | 国产成人精品a视频 | 亚洲天堂精品一区 | 天天想你在线观看完整版高清 | 特级淫片aaaaaaa级附近的 | 视频免费观看在线 | 国产精品伦一区二区三级视频 | 少妇高潮一区二区三区喷水 | 蜜桃臀aⅴ精品一区二区三区 | 91亚洲影院| av日韩在线免费观看 | 日av一区| aaaa黄色片 | 淫五月天|