我正在使用Spring AOP并且具有以下方面:
@Aspect
public class LoggingAspect {
@Before("execution(* com.mkyong.customer.bo.CustomerBo.addCustomer(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("logBefore() is running!");
System.out.println("hijacked : " + joinPoint.getSignature().getName());
System.out.println("******");
}
}
Run Code Online (Sandbox Code Playgroud)
以上方面截获addCustomer方法执行.addCustomermethod将string作为输入.但我需要记录传入addCustomer方法内部的logBefore方法输入.
有可能这样做吗?
我目前正在使用JoinPoint捕获在运行时传递给服务方法的参数.虽然JoinPoint帮助我检索参数值,但我发现当传递的参数是数组时,我没有提供任何好的API来检索参数名称,参数类型,单个参数值等.
这是一个例子:
public void doIt(String user, Attribute[] attr, Integer[] i, boolean bool, List<Attribute> list){.....}
Run Code Online (Sandbox Code Playgroud)
对于上面的方法,当我使用JoinPoint.getArgs()时,我看到参数的垃圾值,它是一个数组或集合.如果参数是数组或集合,我如何验证它们是否是其中之一以及如何遍历它们以检索单个值?
有什么建议 ?谢谢
在我的请求中,我有一个参数名称"accessToken",如何从ProceedingJoinPoint获取请求参数值?
public Object handleAccessToken(ProceedingJoinPoint joinPoint) throws Throwable {
final Signature signature = joinPoint.getStaticPart().getSignature();
if (signature instanceof MethodSignature) {
final MethodSignature ms = (MethodSignature) signature;
String[] params = ms.getParameterNames();
for (String param : params) {
System.out.println(param);
// here how do i get parameter value using param ?
}
}
}
Run Code Online (Sandbox Code Playgroud)
通话方式:
public MyResponse saveUser(
@RequestParam("accessToken") String accessToken,
@RequestBody final UserDto userDto
) {
// code
}
Run Code Online (Sandbox Code Playgroud)
我想在AOP中获取此访问令牌.
提前致谢.