クラス ReflectiveMethodInvocation
- 実装されたすべてのインターフェース:
CloneableSE
、Invocation
、Joinpoint
、MethodInvocation
、ProxyMethodInvocation
MethodInvocation
インターフェースの実装、拡張 ProxyMethodInvocation
インターフェースの実装。 リフレクションを使用してターゲットオブジェクトを呼び出します。サブクラスは invokeJoinpoint()
メソッドをオーバーライドしてこの動作を変更できるため、これは、より専門的な MethodInvocation 実装の有用な基本クラスでもあります。
invocableClone()
メソッドを使用して、呼び出しを複製し、proceed()
を繰り返し(複製ごとに 1 回)呼び出すことができます。setUserAttribute(java.lang.String, java.lang.Object)
/getUserAttribute(java.lang.String)
メソッドを使用して、呼び出しにカスタム属性をアタッチすることもできます。
注意 : このクラスは内部クラスとみなされ、直接アクセスしないでください。パブリックである唯一の理由は、既存のフレームワーク統合 (たとえば、Pitchfork) との互換性です。その他の目的では、代わりに ProxyMethodInvocation
インターフェースを使用してください。
- 作成者:
- Rod Johnson, Juergen Hoeller, Adrian Colyer
- 関連事項:
フィールドサマリー
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明final ObjectSE[]
引数を配列オブジェクトとして取得します。final MethodSE
プロキシされたインターフェースで呼び出されたメソッドを返します。final ObjectSE
getProxy()
このメソッド呼び出しが行われたプロキシを返します。final AccessibleObjectSE
このジョインポイントの静的部分を返します。final ObjectSE
getThis()
現在のジョインポイントの静的部分を保持するオブジェクトを返します。getUserAttribute
(StringSE key) 指定されたユーザー属性の値を返します。この呼び出しに関連付けられているユーザー属性を返します。この実装は、元の引数配列の独立したコピーを含む、この呼び出しオブジェクトの浅いコピーを返します。invocableClone
(ObjectSE... arguments) この実装は、クローンに指定された引数配列を使用して、この呼び出しオブジェクトの浅いコピーを返します。protected ObjectSE
リフレクションを使用してジョインポイントを呼び出します。proceed()
チェーンの次のインターセプターに進みます。void
setArguments
(ObjectSE... arguments) このチェーンのアドバイスで、以降の呼び出しで使用される引数を設定します。void
setUserAttribute
(StringSE key, ObjectSE value) 指定された値を持つ指定されたユーザー属性をこの呼び出しに追加します。toString()
フィールドの詳細
proxy
target
method
arguments
interceptorsAndDynamicMethodMatchers
動的チェックが必要な MethodInterceptor および InterceptorAndDynamicMethodMatcher のリスト。
コンストラクターの詳細
ReflectiveMethodInvocation
protected ReflectiveMethodInvocation(ObjectSE proxy, @Nullable ObjectSE target, MethodSE method, @Nullable ObjectSE[] arguments, @Nullable ClassSE<?> targetClass, ListSE<ObjectSE> interceptorsAndDynamicMethodMatchers) 指定された引数で新しい ReflectiveMethodInvocation を構築します。- パラメーター:
proxy
- 呼び出しが行われたプロキシオブジェクトtarget
- 呼び出すターゲットオブジェクトmethod
- 呼び出すメソッドarguments
- メソッドを呼び出すための引数targetClass
- MethodMatcher 呼び出しのターゲットクラスinterceptorsAndDynamicMethodMatchers
- 実行時に評価が必要な InterceptorAndDynamicMethodMatchers とともに適用されるインターセプター。この構造体に含まれている MethodMatchers は、おそらく静的に一致している限り、すでに一致していることが判明している必要があります。配列の受け渡しは約 10% 高速ですが、コードが複雑になります。そして、静的なポイントカットに対してのみ機能します。
メソッドの詳細
getProxy
インターフェースからコピーされた説明:ProxyMethodInvocation
このメソッド呼び出しが行われたプロキシを返します。- 次で指定:
- インターフェース
ProxyMethodInvocation
のgetProxy
- 戻り値:
- 元のプロキシオブジェクト
getThis
インターフェースからコピーされた説明:Joinpoint
現在のジョインポイントの静的部分を保持するオブジェクトを返します。たとえば、呼び出しのターゲットオブジェクト。
getStaticPart
インターフェースからコピーされた説明:Joinpoint
このジョインポイントの静的部分を返します。静的部分は、インターセプターのチェーンがインストールされているアクセス可能なオブジェクトです。
- 次で指定:
- インターフェース
Joinpoint
のgetStaticPart
getMethod
プロキシされたインターフェースで呼び出されたメソッドを返します。そのインターフェースの基礎となる実装で呼び出されたメソッドに対応する場合と対応しない場合があります。- 次で指定:
- インターフェース
MethodInvocation
のgetMethod
- 戻り値:
- 呼び出されるメソッド
getArguments
インターフェースからコピーされた説明:Invocation
引数を配列オブジェクトとして取得します。この配列内の要素値を変更して引数を変更することが可能です。- 次で指定:
- インターフェース
Invocation
のgetArguments
- 戻り値:
- 呼び出しの引数
setArguments
インターフェースからコピーされた説明:ProxyMethodInvocation
このチェーンのアドバイスで、以降の呼び出しで使用される引数を設定します。- 次で指定:
- インターフェース
ProxyMethodInvocation
のsetArguments
- パラメーター:
arguments
- 引数配列
proceed
インターフェースからコピーされた説明:Joinpoint
チェーンの次のインターセプターに進みます。このメソッドの実装とセマンティクスは、実際のジョインポイント型によって異なります(子インターフェースを参照)。
- 次で指定:
- インターフェース
Joinpoint
のproceed
- 戻り値:
- 子インターフェースの進行定義を見る
- 例外:
ThrowableSE
- ジョインポイントが例外をスローした場合
invokeJoinpoint
リフレクションを使用してジョインポイントを呼び出します。サブクラスはこれをオーバーライドして、カスタム呼び出しを使用できます。- 戻り値:
- ジョインポイントの戻り値
- 例外:
ThrowableSE
- ジョインポイントを呼び出すと例外が発生した場合
invocableClone
この実装は、元の引数配列の独立したコピーを含む、この呼び出しオブジェクトの浅いコピーを返します。この場合は、浅いコピーが必要です。同じインターセプターチェーンと他のオブジェクト参照を使用したいが、現在のインターセプターインデックスには独立した値が必要です。
- 次で指定:
- インターフェース
ProxyMethodInvocation
のinvocableClone
- 戻り値:
- この呼び出しの呼び出し可能なクローン。
proceed()
は、クローンごとに 1 回呼び出すことができます。 - 関連事項:
invocableClone
この実装は、クローンに指定された引数配列を使用して、この呼び出しオブジェクトの浅いコピーを返します。この場合は、浅いコピーが必要です。同じインターセプターチェーンと他のオブジェクト参照を使用したいが、現在のインターセプターインデックスには独立した値が必要です。
- 次で指定:
- インターフェース
ProxyMethodInvocation
のinvocableClone
- パラメーター:
arguments
- 複製された呼び出しが使用することになっている引数。元の引数をオーバーライドします- 戻り値:
- この呼び出しの呼び出し可能なクローン。
proceed()
は、クローンごとに 1 回呼び出すことができます。 - 関連事項:
setUserAttribute
インターフェースからコピーされた説明:ProxyMethodInvocation
指定された値を持つ指定されたユーザー属性をこの呼び出しに追加します。このような属性は、AOP フレームワーク自体では使用されません。これらは、特別なインターセプターで使用するために、呼び出しオブジェクトの一部として保持されます。
- 次で指定:
- インターフェース
ProxyMethodInvocation
のsetUserAttribute
- パラメーター:
key
- 属性の名前value
- 属性の値、またはそれをリセットするnull
getUserAttribute
インターフェースからコピーされた説明:ProxyMethodInvocation
指定されたユーザー属性の値を返します。- 次で指定:
- インターフェース
ProxyMethodInvocation
のgetUserAttribute
- パラメーター:
key
- 属性の名前- 戻り値:
- 属性の値、または設定されていない場合は
null
- 関連事項:
getUserAttributes
この呼び出しに関連付けられているユーザー属性を返します。このメソッドは、ThreadLocal の呼び出しに代わる方法を提供します。このマップは遅延して初期化され、AOP フレームワーク自体では使用されません。
- 戻り値:
- この呼び出しに関連付けられているユーザー属性 (非
null
)
toString