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
注解,就可以正常打印出日志。
接口:

控制台打印:

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