SpringBoot中AOP的简单实现。
在SpringBoot中实现AOP很简单。
1、添加依赖:
//注意依赖的版本
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2、定义切⾯:
WebLogAspect.java
package com.fangshuo.Aspect;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
spring aop应用场景import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.t.request.RequestContextHolder;
import org.t.request.ServletRequestAttributes;
@Aspect
@Component
public class WebLogAspect {
private Logger logger = Logger(getClass());
@Pointcut("execution(public * ller.*.*(..))")
public void webLog(){}
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestAttributes();
HttpServletRequest request = Request();
// 记录下请求内容
logger.info("URL : " + RequestURL().toString());
logger.info("HTTP_METHOD : " + Method());
logger.info("IP : " + RemoteAddr());
logger.info("CLASS_METHOD : " + Signature().getDeclaringTypeName() + "." + Signature().getName());
logger.info("ARGS : " + Args()));
}
@AfterReturning(returning = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) throws Throwable {
// 处理完请求,返回内容
logger.info("RESPONSE : " + ret);
}
}
整个AOP的代码结构如下:
注意点:
在后置通知中returning = “ret”中定义的参数名必须和通知⽅法受那个的参数匹配,即returning = “ret”中
定义的是ret,通知⽅法中也必须是”ret”,否则将抛出异常。3、参考⽂章: @AfterReturning (returning = "ret", pointcut = "webLog()")
public void doAfterReturning (Object ret) throws Throwable {
// 处理完请求,返回内容
logger.info("RESPONSE : " + ret);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论