Aspectj перезаписывает аргумент метода

Я разрабатываю аспект, который проверяет аргументы методов установки и перезаписывает пустые строки с нулевым значением. Это мое состояние до сих пор:

@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;
        }
    }
}

К сожалению, перезаписать заявление args[i] = null; теперь работает! Кто-нибудь знает, как мне перезаписать это?

Ура,

Kevin

1 ответ

Решение

@ Ральф, ты абсолютно прав, разница в том, что с помощью советов я могу передать аргументы к исключению! Теперь это работает отлично!

@Around("execution(* de.foo.entity.*.set*(..)) && args(java.lang.String)")
public void checkAroundSetter(final ProceedingJoinPoint pjp)
    throws Throwable {
    LOGGER.debug(pjp.getSignature().toLongString());
    Object[] args = pjp.getArgs();
    for (int i = 0; i < args.length; i++) {
        if (args[i] instanceof String && ((String) args[i]).isEmpty()) {
            args[i] = null;
        }
    }
    pjp.proceed(args);
}

Эй, люди, что вы думаете о спектакле?

Я полагаю, что вы должны реализовать совет, а не совет перед.

Потому что вы можете использовать продолжить с вашими новыми аргументами:

proceed(newArgs);
Другие вопросы по тегам