he un aspecto que hace varios cálculos en base a los detalles del método de destino, y por lo tanto extractos estos adelantado como sigue:AspectJ MethodSignature volver nulo para getParameterNames()
@Around("execution(* com.xyz.service.AccountService.*(..))")
public void validateParams(ProceedingJoinPoint joinPoint) throws Throwable {
final MethodSignature signature = (MethodSignature) joinPoint.getSignature();
final String methodName = signature.getName();
final String[] parameterNames = signature.getParameterNames();
final Object[] arguments = joinPoint.getArgs();
...
...
...
joinPoint.proceed();
}
de los detalles extraídos, todos reflejan la espera info excepto parameterNames que siempre devuelve null. Esperaría que devuelva {accountDetails} según la firma a continuación. ¿Alguien sabría lo que me puede estar perdiendo, o es un error?
Aquí está la firma del método de destino estoy trabajando en contra:
Long createAccount(RequestAccountDetails accountDetails);
Por lo que parece, no hay una manera confiable (independientemente de las opciones establecidas en tiempo de compilación) de obtener los nombres de los parámetros. Consulte [¿Puedo obtener el nombre del parámetro del método usando la reflexión de Java?] (Http://stackoverflow.com/questions/2237803/can-i-obtain-method-parameter-name-using-java-reflection) y [¿Hay alguna manera? para obtener los nombres de los parámetros del método en Java?] (http://stackoverflow.com/questions/381502/is-there-a-way-to-obtain-names-of-method-parameters-in-java). Entonces sospecho que esto puede ser lo que está en juego aquí. –