前言
SSM中使用AOP,配置非常的繁琐,使用springboot开发完全不需要担心配置的问题
一、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
二、编写通知类
package com.lzl.advice;
import lombok.extern.slf4j.Slf4j;
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.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* 通知类
*/
@Aspect
@Component
@Slf4j
public class LogAspectHandler {
/**
* 自己编写一个切点
*/
@Pointcut("execution(* com.lzl.service.impl.*ServiceImpl.*(..))")
public void pc(){
}
/**
* 前置通知
* 注意:@Before注解使用,最后不要写分号
*/
@Before("LogAspectHandler.pc()")
public void before(){
log.info("前置通知,访问目标方法前执行...");
//如果日志要输出一些获取的数据
ServletRequestAttributes servletRequestAttributes =
(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest servletRequest = servletRequestAttributes.getRequest();
//获取访问地址
String url = servletRequest.getRequestURL().toString();
//获取ip
String ip = servletRequest.getRemoteAddr();
log.info("用户访问请求 url 是:{},ip 是:{}", url, ip);
}
}
三、测试
略
总结
本文主要记录springboot配置AOP的流程