Aspectj перезаписывает аргумент метода
Я разрабатываю аспект, который проверяет аргументы методов 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;
}
}
}
К сожалению, перезаписываемый оператор args[i] = null;
теперь работает! Кто-нибудь знает, как его переписать?
Приветствия,
Кевин
Ответы
Ответ 1
@Ralph у вас абсолютно все в порядке, разница в том, что с советом вокруг я могу передать аргументы за экзекьютив! Теперь это прекрасно!
@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);
}
Эй, что ты думаешь о производительности?
Ответ 2
Я считаю, что вы должны использовать совет, а не совет.
Потому что вы можете использовать следующие аргументы:
proceed(newArgs);