站内搜索

搜索

06-02 13:26
05-31 17:11

Aop实现接口日志打印

47

主题

38

点数

151

积分

地衡测影

积分
151

柴到了

发表于 2025-3-21 02:01:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

Aop实现接口日志打印

​ 在项目中有时会用到很多AOP实现的自定义注解,这里做一个入门型的案例;

首先,我们需要在项目中引入以下依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.78</version>
</dependency>
<!-- AOP -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

其次,完成我们的自定义注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface MethodLog {
}

自定义注解之后,要实现切面类,对使用该注解的接口进行操作。

@Aspect
@Component
@Slf4j
public class MethodLogAspect {

    /**
     * 自定义切点
     */
  @Pointcut("@annotation(com.alex.Annotation.MethodLog)")
    public void methodLog(){
    }

    /**
     * 前置通知
     * @param joinPoint 切点
     */
    @Before("methodLog()")
    public void doBefore(JoinPoint joinPoint){
        // 记录方法的入参
        log.info("调用的方法为:{}",joinPoint.getSignature());
        log.info("方法的入参为:{}", JSON.toJSONString(joinPoint.getArgs()));

    }
    /**
     * 后置通知
     * @param o 方法返回值
     */
    @AfterReturning(returning = "o",pointcut = "methodLog()")
    public void doAfter(Object o){
        // 记录方法的出参
        log.info("方法的出参为:{}",JSON.toJSONString(o));
    }
}

最后在controller层的接口上加上MethodLog注解,就可以正常打印出日志。

接口:

image20230717145315988.png

控制台打印:

image20230717145305780.png

如此,就实现了一个简单的aop入门案例

温馨提示:看帖回帖是一种美德,您的每一次发帖、回帖都是对论坛最大的支持,谢谢! [这是默认签名,点我更换签名]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入社群

加入社群

Pixtech

Powered by Pixtech

© 2025 Pixtech Team.