2017-08-17 10 views
3

Spring AOPのパラメータ名に基づいてメソッドパラメータ値を取得することは可能ですか?Spring AOP getメソッドのパラメータ値(パラメータ名に基づく)

MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature(); 

Method method = signature.getMethod(); 

method.getParameters().getName() 
// possible to get the paramater names 

この手法は、値ではなくパラメータ名を取得します。

proceedingJoinPoint.getArgs() 

は値ではない名前

を返します。そして、パラメータ名に基づいて値を取得することも可能でしょうか?

答えて

2

私は、関数の引数とその値を記録するためにAOPを使用しなければならないときと同じことを探しましたが、引数名に基づいて値を取得する直接的な方法はないようです。

foo("hello", "world"); 

method.getParameters().getName()は "、[ "A" を返されると呼ばれる、私はしかし、私たちはmethod.getParameters().getName()proceedingJoinPoint.getArgs()によって返される値は常に同期していた気づい何

。すなわち、関数の

public void foo(String a, String b) 

b "]とproceedingJoinPoint.getArgs()が[" hello "、" world "]を返します。だから、インデックスを使って配列全体を反復することができ、各インデックスについては、第i引数の名前はi番目の引数の値に対応します。i

この動作に関するサポート文書は見つかりませんでしたが、このコードは実働サーバーで約1年間実行されていたため、間違った結果が得られませんでした。誰かがこの振る舞いの文書にリンクすることができたらうれしいですが。この現象を検証するためにリフレクションのコードを掘り下げることさえできます。

関連する問題