配置AOP
添加POM依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
新建类
只需使用@Aspect注解。再加上@Component 表示此类为Spring管理组件
@Aspect @Component public class HttpAspect { //日志管理 private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class); }
配置切入点方法
在上面新建的类中写如下方法,配置AOP的切入点。
public * com.hjw.controller.GrilController.*(..) 表示GrilController下的所有方法
public * com.hjw.controller.GrilController.addGril(..) 则表示GrilController 下的addGril()方法
@Pointcut("execution(public * com.hjw.controller.GrilController.*(..))") public void log(){ }
配置AOP处理请求方法
- doBefore()
在进入切点之前处理请求。获取请求的url,ip,类方法与参数等信息
- doAfter()
在进入切点之后执行日志打印操作
- doAfterReturn()
获取切点方法返回的值,并通过日志打印出来
@Before("log()") public void doBefore(JoinPoint joinPoint){ //获取请求信息 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); //获取URL logger.info("url={}",request.getRequestURL()); //获取IP logger.info("ip={}",request.getRemoteAddr()); //获取类方法 logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() +"."+ joinPoint.getSignature().getName()); //获取参数 logger.info("args={}",joinPoint.getArgs()); logger.info("添加数据之前"); } @After("log()") public void doAfter(){ logger.info("添加数据之后"); } @AfterReturning(returning = "object",pointcut = "log()") public void doAfterReturn(Object object){ logger.info("return={}", object.toString()); }