運用Spring 的 Aspect 在request 進入Contraller 之前, 把ProceedingJoinPoint 改為JointPoint, 做String Convertion
时间: 2024-10-04 12:01:43 浏览: 33
dfd-contraller
在Spring AOP中,如果你想在请求进入Controller之前进行字符串转换,并将`ProceedingJoinPoint`替换为`JointPoint`以便于访问方法参数,这通常需要创建一个`Advice`,尤其是如果你打算对所有入参进行统一的转换。不过,`ProceedingJoinPoint`已经是包含了原始的`JointPoint`信息,包括方法参数,所以一般不需要特意转换。
如果你确实想针对所有的参数做转换,你可以创建一个`Around`类型的`Aspect`,并在其中获取到`JoinPoint`对象,然后遍历其参数执行转换。这里有一个简化的例子:
```java
@Aspect
@Component
public class ParameterConversionAspect {
@Before("execution(* com.example.web.controller.*(..))")
public Object convertParameters(ProceedingJoinPoint joinPoint) throws Throwable {
// 获取方法参数
Object[] args = joinPoint.getArgs();
// 对每个参数进行转换 (假设有个通用的Converter方法)
for (Object arg : args) {
if (arg instanceof String) { // 只处理String类型
String converted = stringConverter.convert((String)arg);
args[Arrays.asList(args).indexOf(arg)] = converted; // 更新参数
}
}
// 使用转化后的参数执行目标方法
return joinPoint.proceed(args); // 注意这里不需要转换成JointPoint
}
private Converter<string, string> stringConverter; // 假设你已经有了这个转换工具类
}
```
在这个示例中,`stringConverter.convert()`是你实际的字符串转换逻辑。
阅读全文