Iは、ターゲットメソッドの詳細に基づいて各種の演算を行う態様を有しており、次のように、したがって、これらの先行を抽出する。抽出された内容のAspectJのMethodSignature()
@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();
}
を、すべての予想を反映常にnullを返すparameterNames以外の情報私はそれが以下の署名に従って{accountDetails}を返すと期待します。誰かが私が逃しているかもしれないことを知っているだろうか、これはバグですか?
ここで私が不利に働いていますターゲットメソッドのシグネチャです:私はvalidateParamsの署名を変更したparamName: accountDetails
:私のために
Long createAccount(RequestAccountDetails accountDetails);
見た目から、パラメータ名を取得する信頼できる方法はありません(コンパイル時に設定されたオプションに依存しません)。 「Javaリフレクションを使用してメソッドパラメータ名を取得することはできますか?」(http://stackoverflow.com/questions/2237803/can-i-obtain-method-parameter-name-using-java-reflection)と[方法はありますかJavaのメソッドパラメータの名前を取得する](http://stackoverflow.com/questions/381502/is-there-a-way-to-obtain-names-of-method-parameters-in-java)を参照してください。だから、私はこれがここにあるのかもしれないと思う。 –