Aspectj覆盖方法的参数

egl*_*ter 10 java aop aspectj spring-aop

我正在开发一个方面来检查setter方法的参数并用空值覆盖空字符串.到目前为止,这是我的州:

@Before("execution(* de.foo.entity.*.set*(..)) && args(java.lang.String)")
public void check(final JoinPoint jp) {
    LOGGER.debug(jp.getSignature().toLongString());
    Object[] args = jp.getArgs();
    for (int i = 0; i < args.length; i++) {
        if (args[i] instanceof String && ((String) args[i]).isEmpty()) {
            args[i] = null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,覆盖语句args[i] = null;现在可以正常工作!有谁知道我该怎么覆盖它?

干杯,

凯文

Ral*_*lph 32

我相信你必须实施一个周围的建议,而不是之前的建议.

因为您可以继续使用新参数:

proceed(newArgs);
Run Code Online (Sandbox Code Playgroud)

  • 之前的建议获取参数数组的副本,但它不能修改原始参数.这就是周围的建议.拉尔夫:+1 (7认同)