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