I aspekt, który ma różne obliczenia na podstawie danych METODY docelowego, a więc Ekstrakty z góry, jak następuje:AspectJ MethodSignature powrocie null 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();
}
wyekstrahowanego szczegółów wszystkie odzwierciedlają oczekiwany info z wyjątkiem parametruName, które zawsze zwraca wartość null. Spodziewam się, że zwróci {accountDetails} zgodnie z podpisem poniżej. Czy ktokolwiek wie, czego mi brakuje, czy jest to błąd?
Oto podpis metody docelowej pracuję przeciw:
Long createAccount(RequestAccountDetails accountDetails);
Z jego wyglądu nie ma niezawodnego sposobu (niezależnie od opcji ustawionych podczas kompilacji) pobierania nazw parametrów. Zobacz [Czy mogę uzyskać nazwę parametru metody za pomocą Java Reflect?] (Http://stackoverflow.com/questions/2237803/can-i-obtain-method-parameter-name-using-java-reflection) i [Czy istnieje sposób uzyskać nazwy parametrów metod w Javie?] (http://stackoverflow.com/questions/381502/is-there-a-way-to-obtain-names-of-method-parameters-in-java). Podejrzewam, że to może być to, co tu się dzieje. –