给案例添加一个记录方法运行日志详情的切面LogAspect, 在类中记录下访问的详细信息(类名、方法名、请求参数、返回结果)
时间: 2023-12-30 08:06:04 浏览: 100
首先,需要定义一个切面 LogAspect,用于记录请求的详细信息。可以使用 @Aspect 注解将其定义为一个切面,并使用 @Around 注解定义一个环绕通知来实现记录日志的功能。具体代码如下:
```
@Aspect
@Component
public class LogAspect {
@Around("execution(* com.example.demo.controller.*.*(..))")
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
// 获取类名、方法名和参数
String targetClassName = joinPoint.getTarget().getClass().getName();
String targetMethodName = joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
// 执行方法
Object result = joinPoint.proceed();
// 记录日志
String logInfo = String.format("Class: %s, Method: %s, Args: %s, Result: %s",
targetClassName, targetMethodName, Arrays.toString(args), result);
System.out.println(logInfo);
return result;
}
}
```
上述代码中,使用 @Around 注解定义了一个环绕通知,指定了切点为 com.example.demo.controller 包下的所有方法。在环绕通知中,首先获取了类名、方法名和参数;然后执行方法;最后记录了日志信息,包括类名、方法名、请求参数和返回结果。
需要注意的是,为了让 Spring 能够扫描到该切面,需要在配置类中添加 @EnableAspectJAutoProxy 注解,开启自动代理功能。同时,也需要将该切面声明为一个 Bean,可以使用 @Component 注解或者在配置类中使用 @Bean 注解来定义。
阅读全文