springboot前置通知修改参数
时间: 2023-06-25 14:03:21 浏览: 111
在 Spring AOP 中,前置通知是在目标方法被调用之前执行的增强操作,可以在此处修改方法的参数。
下面是一个使用前置通知修改方法参数的示例:
```java
@Component
@Aspect
public class MyAspect {
@Before("execution(* com.example.demo.MyService.*(..)) && args(param,..)")
public void before(JoinPoint joinPoint, String param) {
System.out.println("Before advice : " + param);
// 修改参数
String newParam = param + " modified";
Object[] args = joinPoint.getArgs();
args[0] = newParam;
}
}
```
在上面的示例中,`@Before` 注解表示这是一个前置通知,`execution(* com.example.demo.MyService.*(..))` 表示切点表达式,表示对 `com.example.demo.MyService` 类中的所有方法进行切入,`args(param,..)` 表示方法的第一个参数为 `param`。在 `before` 方法中,我们可以通过 `joinPoint.getArgs()` 获取到方法的参数数组,并修改参数的值。
需要注意的是,在修改参数时,我们必须直接修改参数数组中的值,而不能通过返回一个新的参数数组来实现。因为方法参数是按引用传递的,如果我们返回一个新的参数数组,那么实际上并没有修改方法的参数。