有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring AOP在around建议上更改方法参数的值

在使用Spring AOP执行之前,是否可以根据一些检查来更改方法参数值

我的方法

public String doSomething(final String someText, final boolean doTask) {
    // Some Content
    return "Some Text";
}

建议方法

public Object invoke(final MethodInvocation methodInvocation) throws Throwable {
    String methodName = methodInvocation.getMethod().getName();

    Object[] arguments = methodInvocation.getArguments();
    if (arguments.length >= 2) {
        if (arguments[0] instanceof String) {
            String content = (String) arguments[0];
            if(content.equalsIgnoreCase("A")) {
                // Set my second argument as false
            } else {
                // Set my second argument as true
            }
        }
    }
    return methodInvocation.proceed();
}

请建议我设置方法参数值的方法,因为该参数没有setter选项


共 (1) 个答案

  1. # 1 楼答案

    您可以使用Spring AOP,使用@Around创建点切割。 然后,您可以使用下面的代码根据条件更改方法的参数

    int index = 0;
    Object[] modifiedArgs = proceedingJoinPoint.getArgs();
    
    for (Object arg : proceedingJoinPoint.getArgs()) {
        if (arg instanceof User) {    // Check on what basis argument have to be modified.
            modifiedArgs[index]=user;
           }
        index++;
    }
    return proceedingJoinPoint.proceed(modifiedArgs);  //Continue with the method with modified arguments.