springmvc通过记录请求数据和响应数据spring mvc 能过记录请求数据记录有很多种⽅式,主要有以下三种:
1:过滤器
2:HandlerInterceptor
3:Aspect接⼝控制器
但是就我个⼈所知要记录返回的数据,只能通过Aspect处理,以下是实现此需要的代码
package fig;
import java.util.Arrays;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import t.annotation.Configuration;
import ls.JsonUtils;
/***
*
* @author wujf 拦截所有控制器的返回,记录响应报⽂
*/
@Aspect
@Configuration
public class QmttAspect {
private static final Logger log = Logger(QmttAspect.class);
public QmttAspect() {springboot和过滤器
}
// 不能拦截@RequestMapping,这样会导致swagger⽆法使⽤
// @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
@Pointcut("execution(public * ller.*.*(..))")
public void pointCutMethod() {
}
// 声明环绕通知
@Around("pointCutMethod()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
String controller = Target().getClass().getSimpleName();
String method = Signature().getName();
String args = Args());
log.info("<{}.{}>,请求参数:{}", controller, method, args);
Object ret = pjp.proceed();
log.info("响应数据:{}", JsonString(ret));
return ret;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论