AOP所需依赖
<!-- aop切面 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
1.创建日志记录注解
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {
String api() default "";
}
2.创建切面写日志记录逻辑
@Aspect
@Component
public class LogAspectj {
//织入点
@Pointcut("@annotation(com.csf.securitydemo.annotation.Log)")
public void logPointCut() {
}
//运行后执行
@AfterReturning(pointcut = "logPointCut()",returning = "api")
public void after(JoinPoint joinpoint,Object api){
handleLog(joinpoint,null,api);
}
protected void handleLog(final JoinPoint joinPoint, final Exception e, Object api){
try {
// 获得注解
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
Method method = methodSignature.getMethod();
Log annotation = null;
if(method != null){
annotation = method.getAnnotation(Log.class);
}
if (annotation == null)
{
return;
}
//注解备注参数
System.out.println(annotation.api());
//接口接收参数
System.out.println(Arrays.asList(joinPoint.getArgs()));
//接口返回参数
System.out.println(JSON.toJSONString(api));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
3.使用:再任意接口上标注@Log注解 调用测试
调用接口测试结果