springboot自定义注解的使用++日志

news/2024/11/7 5:32:48/

1.添加切面依赖

<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version>
</dependency>

2.自定义注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {String value() default "";
}

3.添加切面

添加component注解自动装配bean到ioc容器中
添加切面注解   
@Component
@Aspect
@Slf4j
public class LogAspect {
​private final LogService logService;
​ThreadLocal<Long> currentTime = new ThreadLocal<>();
​public LogAspect(LogService logService) {this.logService = logService;}
​/*** 配置切入点,路径为添加自定义注解所在的位置*/@Pointcut("@annotation(cn.edu.tsu.torox.sysLog.annotation.Log)")public void logPointcut() {// 该方法无方法体,主要为了让同类中其他方法使用此切入点}
​/*** 配置环绕通知,使用在方法logPointcut()上注册的切入点** @param joinPoint join point for advice*/@Around("logPointcut()")public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {Object result;currentTime.set(System.currentTimeMillis());result = joinPoint.proceed();cn.edu.tsu.torox.sysLog.model.Log log = new cn.edu.tsu.torox.sysLog.model.Log("INFO",System.currentTimeMillis() - currentTime.get());currentTime.remove();
//        String request = RequestHolder.getHttpServletRequest();//业务类,根据需求定义,这里为日志,提前建表,进行crudlogService.save("1", "google", "192.168.231.20",joinPoint, log);return result;}
​/*** 配置异常通知** @param joinPoint join point for advice* @param e exception*/@AfterThrowing(pointcut = "logPointcut()", throwing = "e")public void logAfterThrowing(JoinPoint joinPoint, Throwable e) {cn.edu.tsu.torox.sysLog.model.Log log = new cn.edu.tsu.torox.sysLog.model.Log("ERROR",System.currentTimeMillis() - currentTime.get());currentTime.remove();;
//        HttpServletRequest request = RequestHolder.getHttpServletRequest();logService.save("1", "google", "192.168.231.20", (ProceedingJoinPoint)joinPoint, log);}
​
}

4.具体详细参数在joinPoint对象中

5.将自定义注解添加到相应的控制层方法上

流程:

接口-->控制层--->找到带有自定义注解的方法---->跳入切面--->执行环绕通知中的方法(获取该类的方法)

依赖:若项目使用的数据层技术为Spring-data-jpa则无须单独引入aspectjweaver依赖。

 


http://www.ppmy.cn/news/147954.html

相关文章

三分钟了解SpringBoot配置优先级底层源码解析

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是冰点&#xff0c;从业11年&#xff0c;目前在物流独角兽企业从事技术方面工作&#xff0c;&#x1f342;博主正在努力完成2023计划中&#xff1a;以梦为马&#xff0c;扬帆起航&#xff0c;2023追梦人&#x1f4dd;联系…

#触摸一体机##五指息屏#

标题#触摸一体机# # 五指息屏# ## 怎么设置 安卓系统☞设置☞通用☞更多管理☞手势管理☞五指息屏。

信捷XD5程序+TG765触摸屏程序,功能为XY双轴排版机,带2个气缸

信捷XD5程序&#xff0b;TG765触摸屏程序&#xff0c;功能为XY双轴排版机&#xff0c;带2个气缸&#xff0c;程序逻辑清晰易懂&#xff0c;功能有电机正反转修改&#xff0c;正负软限位&#xff0c;触摸屏密码修改&#xff0c;程序内嵌C语言块&#xff0c;适合新手学习 ID:27…

贝加莱触摸屏维修4PP065.0571-X74F

贝加莱触摸屏维修故障包括&#xff1a;不启动、黑屏、蓝屏、液晶屏损坏、主板烧坏、触摸失灵、乱码、卡机、图像有干扰纹、烧元件、图像抖动、按键无反应、电源板故障、无背光、反复重启、个别区域不能触摸、触摸偏移、高压板故障等等。 触摸屏触摸无反应处理方法&#xff1a;…

优控触摸屏使用手册_中达优控plc触摸屏一体机说明书资料

中达优控plc触摸屏一体机说明书资料 优控一体机 MM妹妹系列说明优控一体机 MM妹妹系列说明 优控一体机 MM妹妹系列选型表版本优控一体机 MM妹妹系列选型表版本2016-1-5 不是所有的一体机都叫不是所有的一体机都叫中达优控中达优控中达优控中达优控全兼容全兼容PLC 触摸一体机。…

Unity MQTT

Unity MQTT 最近接到一个物联网相关的项目&#xff0c;那边要求使用MQTT来进行通讯&#xff0c;第一次接触这个东西&#xff0c;所以写篇文档简单介绍下。 简介 MQTT&#xff08;消息队列遥测传输&#xff09; 是一种轻量级的消息传输协议&#xff0c;它可以用于连接 IoT 设…

MITA触摸屏维修WP4053米塔工控机控制屏维修

MITA-TEKNIK米塔触摸屏维修工控机工控屏控制器维修DISPLAY 2COM全系列型号 Mita-Teknik触摸屏维修常见故障&#xff1a;上电无显示&#xff0c;运行报故障&#xff0c;无法与电脑通讯&#xff0c;触摸无反应&#xff0c;触控板破裂&#xff0c;触摸玻璃&#xff0c;上电黑屏&a…

【定制项目】【触摸屏一体机】【自启动运行】【M15 消防安全宣传】【横屏版】主要模块:视频 + 音频 + 图标 + 问答游戏

之前客户指定要求竖屏版&#xff0c;所以只做了竖屏效果&#xff08;项目管理箴言 - 做只做需要的工作&#xff0c;不要镀金&#xff09;&#xff0c;后来客户采购了一批横屏设备&#xff08;毕竟横屏播放视频才是王道&#xff09;&#xff0c;所以代码升级支持横屏版。 功能参…