当前位置: 首页 > news >正文

Aop实现简单基于日志记录

目录

一、基础知识:

二、测试记录接口的参数和结果


一、基础知识:

  • @Before:用于执行目标方法之前的逻辑。
  • @After:用于执行目标方法之后的逻辑。
  • @AfterReturning:用于获取目标方法返回值后的逻辑。
  • @AfterThrowing:用于处理目标方法抛出异常后的逻辑。
  • @Around:用于在目标方法执行前后执行逻辑,并可控制是否执行目标方法。
  • @Pointcut:用于定义切入点,指定哪些方法将被通知。

二、测试记录接口的参数和结果

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

}
@Aspect
@Component
@Slf4j
public class LoggingAspect {

    @Pointcut("@annotation(loggable)")
    public void loggableMethod(Loggable loggable) {}


    @Around("loggableMethod(loggable)")
    public Object logAround(ProceedingJoinPoint joinPoint, Loggable loggable) throws Throwable {
        // 获取方法名和参数
        String methodName = joinPoint.getSignature().getName();
        Object[] args = joinPoint.getArgs();

        log.info("Starting method: {}", methodName);
        log.info("Request parameters: {}", Arrays.toString(args));

        // 调用目标方法并获取返回值
        Object result = joinPoint.proceed();

        log.info("Finished method: {}", methodName);
        log.info("Response: {}", result);

        return result; // 返回结果
    }

    @Before("loggableMethod(loggable)")
    public void logBefore(JoinPoint joinPoint, Loggable loggable) {
        log.info("Starting method: {}", joinPoint.getSignature().getName());
        log.info("Request parameters: {}", Arrays.toString(joinPoint.getArgs()));
    }

    @After("loggableMethod(loggable)")
    public void logAfter(JoinPoint joinPoint, Loggable loggable) {
        log.info("Finished method: {}", joinPoint.getSignature().getName());
    }
}

结果:

相关文章:

  • 基于Android的记事本APP设计与实现:从需求分析到功能实现(超级简单记事本,附源码+文档报告)
  • SpringDataRedis存储Redis的数据序列化
  • centos 8安装及相关操作
  • 外层元素旋转,其包括在内的子元素一并旋转(不改变旋转中心),单元测试
  • 线程同步:多线程编程的核心机制
  • 确定一个数字是否为 2 的幂
  • 为什么 Young GC 比 Full GC 快
  • 北京迅为iTOP-RK3568开发板OpenHarmony系统南向驱动开发实操-HDF驱动配置LED
  • Muduo库的简介与使用
  • Java常用算法
  • 使用Fluent-bit将容器标准输入和输出的日志发送到Kafka
  • 序列化和反序列化TCP粘包问题
  • 性能调优与抓包分析:TCP三次握手、CDN优化与Wireshark实战
  • 【Git】配置Git
  • 软考计算机知识-流水线
  • 【云原生】动态资源分配(DRA)深度洞察报告
  • 技术速递|Visual Studio Code 2025年2月更新(v1.98)
  • 网络华为HCIA+HCIP数据链路层协议-以太网协议
  • 手写一个简易版的tomcat
  • 解释VLA和具身智能之间的关系
  • 陈刚:推动良好政治生态和美好自然生态共生共优相得益彰
  • 北邮今年本科招生将首次突破四千人,新增低空技术与工程专业
  • 法律顾问被控配合他人诈骗酒店资产一审判8年,二审辩称无罪
  • 国际乒联主席索林:洛杉矶奥运会增设混团是里程碑事件
  • 著名心血管病学专家李国庆教授逝世,享年63岁
  • 梅花奖在上海|话剧《主角》:艺术与人生的交错