首先 我们在 pom.xml 中 dependencies标签中加入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

然后 我们随便创建一个类
编写代码如下

package com.example.webdom.domain;

import org.springframework.stereotype.Component;

@Component
public class user {
    public void add(){
        System.out.println("add......");
    }
}

user 就是个普通的类 其中 有两个点 首先 要写一个方法 给我们的aop监听 这里我写了个add内容也是随便写了两下 然后要声明Component 让全局扫描能拿到你这个类

然后 我们在 config目录 如果没有 config 就创建一个 下面创建一个配置类 这里就叫 MyAspect 吧
参考代码如下

package com.example.webdom.config;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class MyAspect {
    // 定义切点
    @Pointcut("execution(* com.example.webdom.domain.user.add(..))")
    public void serviceMethods() {
        System.out.println("aop监听到了");
    }

    // 定义通知
    @Before("serviceMethods()")
    public void beforeAdvice(JoinPoint joinPoint) {
        // 在目标方法执行前执行的逻辑
        System.out.println("Before method: " + joinPoint.getSignature().getName());
    }
}

java springboot中使用 AOP监听方法执行周期-LMLPHP
之前 我们也讲过aop的五大通知类型

@Before注解标注的方法 会在指向的方法执行前执行
@After注解标注的方法 会在指向的方法执行结束后执行
@AfterReturning标注的方法 也是在被标注的方法结束执行 但他与After的不同在于 他是等被指定方法给出返回值后执行 但如果你的方法没有返回值 他也会走的
@AfterThrowing注解标注的方法 会在指定方法发生异常时执行
@Around标注的方法 相对特殊一点 这个叫环绕通知 在方法执行前和执行后 都会执行 但执行的片段不一样
他接收一个ProceedingJoinPoint 类型的对象参数 对象中有一个proceed函数 需要在方法中调用
写在调用proceed前的代码 会在指定方法前执行 而在proceed后面的则反过来 会在指定方法执行后执行

这里 我们绑定了Before 会在add函数执行前执行
然后 这里 我们写了整个路径 com.example.webdom.domain.user.add 这个不用担心 只要没报错 就是对的路径

然后 我们找个地方去用一下它
java springboot中使用 AOP监听方法执行周期-LMLPHP
这到没什么讲究 的 就是随便找个地方 条件装配一下 user类 然后调用一下它的 add方法

运行结果如下 从输出上看 没有任何 问题
java springboot中使用 AOP监听方法执行周期-LMLPHP

12-01 02:58