在 controller 中 纯粹的为 接受请求的控制,只要两件事情,一个是 接受请求,第二个事情,就是条件判断(不建议在service中进行判断,因为有些系统是分布式的,可能需要发送一次请求,加大系统的开销,所以在controller中就进行判断,减轻系统的压力),但是比如日志操作。不应该在controller中进行大量的写,但是为了日后好排查问题和维护,日志又是不可或缺的。所以,切面日志变得很重要了。
首先 日志的记录应该是 方法级别的,所以我们写一个注解。来标记 此方法是需要记录日志的。
关于 自定义注解的学习,也是我的博客
https://blog.youkuaiyun.com/drsbbbl/article/details/96478668
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ControllerLog {
/**
* 方法描述
* @return
*/
public String description() default "";
}
首先我们要有切面类: 关于pom文件等会提供个下载连接

切点表达式写法: 具体看 spring官方文档

这种写法 还是看到spring 官方这么写很方便 就拿来用了



主要分为 请求开始打印所有的请求参数 我是喜欢写在方法的参数上,有时也可以通过request 获取到 下面 是可以通过request获取方法参数的
Map<String,String[]> map = request.getParameterMap();
for(String key : map.keySet()) {
logger.debug("--debug--day_report key:" + key + ", value:" + map.get(key));
String[] value = map.get(key);
if(value == null) {
continue;
}
if(value.length == 1) {
String v = value[0];
if(v == null || v.trim().equals("")) {
continue;
}
params.put(key, v);
} else {
params.put(key, value);
}
}
本文介绍如何在Spring框架中使用切面(AOP)技术实现方法级别的日志记录。通过自定义注解@ControllerLog,标记需要记录日志的方法,并在切面类中实现请求参数的打印和日志的记录,以减轻控制器的压力并便于后期问题排查。
2042

被折叠的 条评论
为什么被折叠?



