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);