springboot的aop切点定义到某一方法
时间: 2024-09-19 16:06:02 浏览: 38
Spring Boot中的AOP (Aspect Oriented Programming) 拥有强大的切面编程能力,可以对特定的方法进行拦截和增强。要将切点定义到某个方法上,你需要以下几个步骤:
1. 定义切面:首先创建一个实现了`@Aspect`注解的类,这是AOP的核心组件。
```java
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class MyAspect {
```
2. 定义切点:通过`@Pointcut`注解声明一个名称,指定你要拦截的方法模式。例如,如果你想要拦截所有包下的`com.example.service`包下的`save`方法:
```java
@Pointcut("execution(* com.example.service.*.*(..))")
private void mySaveMethod() {}
```
这里的`*`表示任意数量和类型的参数。
3. 实现通知(Advice):在`@Around`、`@Before`、`@AfterReturning`等通知中,编写你的业务逻辑,这个逻辑会在指定的方法执行前后运行。
```java
@Around("mySaveMethod()")
public Object aroundSave(ProceedingJoinPoint joinPoint) throws Throwable {
// 开始记录方法前的信息
long startTime = System.currentTimeMillis();
// 执行原方法
Object result = joinPoint.proceed();
// 记录方法后的信息
long endTime = System.currentTimeMillis();
System.out.println("Save method took " + (endTime - startTime) + "ms");
return result;
}
```
阅读全文