问题
I'm developing an aspect that checks arguments of setter methods and overwrites empty strings with null value. This is my state so far:
@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;
}
}
}
Unfortunately the overwrite statement args[i] = null; does now work! Do anyone know how should I overwrite it?
Cheers,
Kevin
回答1:
I believe you have to implement an around advice, instead of a before advice.
Because you can use proceed with your new arguments:
proceed(newArgs);
来源:https://stackoverflow.com/questions/4312224/aspectj-overwrite-an-argument-of-a-method