SpringBoot2.0学习之使用Aop技术处理web请求信息
1. 在pom.xml中引入aop的依赖
<!--aop依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2. 创建切面
@Aspect
@Component
public class WebLogAspect {
// 获取log对象,将请求信息放入日志中
private Logger log = LoggerFactory.getLogger(WebLogAspect.class);
}
@Aspect注解用来将类定义为切面。
3. 创建切点
@Pointcut("execution(public * com.qf.demo.controller..*.*(..))")
public void weblog(){}
@Pointcut注解用来定义切点,括号内为切入规则。
4. 拦截请求信息只需要用到Aop的前置通知和后置通知即可,如下:
// 前置通知 : 拿到请求后,获取请求信息和参数信息
@Before("weblog()")
public void doBefore(){
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
log.info("url : " + request.getRequestURL().toString());
log.info("method : " + request.getMethod());
log.info("ip : " + request.getRemoteAddr());
Enumeration<String> enumeration = request.getParameterNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
log.info("key:{},value:{}", name, request.getParameter(name));
}
}
// 后置通知: 获取返回的结果
@AfterReturning(returning = "response", pointcut = "weblog()")
public void doAfterReturning(Object response) {
log.info("response : " + response);
}
前置通知 :拿到请求后,获取请求信息和参数信息。
后置通知: 获取返回的结果。
5. 测试结果:

当你觉得自己不行的时候,
就去走斑马线,
这时候,你就是个行人。