依赖引入

  1. <!-- AOP -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-aop</artifactId>
  5. </dependency>

定义切面

@Component
@Aspect // 标注为切面
public class LogAspect {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    // 切入点表达式,表示切入点为控制器包中的所有方法
    @Pointcut("within(com.design.boot.controller.*)")
    public void logAspect() {
    }

    // 切入点之前执行
    @Before("logAspect()")
    public void doBefore(JoinPoint joinPoint) {
        logger.info("访问时间:{}--访问接口:{}", LocalDateTime.now(), joinPoint.getSignature());
    }
}

切入点表达式说明

execution( com.jiuxian..service..*(..))

  • execution 表达式的主体
  • 第一个* 代表任意的返回值
  • com.jiuxian aop所横切的包名
  • 包后面.. 表示当前包及其子包
  • 第二个* 表示类名,代表所有类
  • .*(..) 表示任何方法,括号代表参数 .. 表示任意参数