public class ReflectiveMethodInvocation extends ObjectSE implements ProxyMethodInvocation, CloneableSE
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 ObjectSE[] | arguments |
protected ListSE<?> | interceptorsAndDynamicMethodMatchers 動的チェックが必要な MethodInterceptor および InterceptorAndDynamicMethodMatcher のリスト。 |
protected MethodSE | method |
protected ObjectSE | proxy |
protected ObjectSE | target |
| 修飾子 | コンストラクターと説明 |
|---|---|
protected | ReflectiveMethodInvocation(ObjectSE proxy, ObjectSE target, MethodSE method, ObjectSE[] arguments, ClassSE<?> targetClass, ListSE<ObjectSE> interceptorsAndDynamicMethodMatchers) 指定された引数で新しい ReflectiveMethodInvocation を構築します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
ObjectSE[] | getArguments() 引数を配列オブジェクトとして取得します。 |
MethodSE | getMethod() プロキシされたインターフェースで呼び出されたメソッドを返します。 |
ObjectSE | getProxy() このメソッド呼び出しが行われたプロキシを返します。 |
AccessibleObjectSE | getStaticPart() このジョインポイントの静的部分を返します。 |
ObjectSE | getThis() 現在のジョインポイントの静的部分を保持するオブジェクトを返します。 |
ObjectSE | getUserAttribute(StringSE key) 指定されたユーザー属性の値を返します。 |
MapSE<StringSE, ObjectSE> | getUserAttributes() この呼び出しに関連付けられているユーザー属性を返します。 |
MethodInvocation | invocableClone() この実装は、元の引数配列の独立したコピーを含む、この呼び出しオブジェクトの浅いコピーを返します。 |
MethodInvocation | invocableClone(ObjectSE... arguments) この実装は、クローンに指定された引数配列を使用して、この呼び出しオブジェクトの浅いコピーを返します。 |
protected ObjectSE | invokeJoinpoint() リフレクションを使用してジョインポイントを呼び出します。 |
ObjectSE | proceed() チェーンの次のインターセプターに進みます。 |
void | setArguments(ObjectSE... arguments) このチェーンのアドバイスで、以降の呼び出しで使用される引数を設定します。 |
void | setUserAttribute(StringSE key, ObjectSE value) 指定された値を持つ指定されたユーザー属性をこの呼び出しに追加します。 |
StringSE | toString() |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSEprotected final ObjectSE proxy
protected final MethodSE method
protected ObjectSE[] arguments
protected final ListSE<?> interceptorsAndDynamicMethodMatchers
protected ReflectiveMethodInvocation(ObjectSE proxy, @Nullable ObjectSE target, MethodSE method, @Nullable ObjectSE[] arguments, @Nullable ClassSE<?> targetClass, ListSE<ObjectSE> interceptorsAndDynamicMethodMatchers)
proxy - 呼び出しが行われたプロキシオブジェクト target - 呼び出すターゲットオブジェクト method - 呼び出すメソッド arguments - メソッドを呼び出すための引数 targetClass - MethodMatcher 呼び出しのターゲットクラス interceptorsAndDynamicMethodMatchers - 実行時に評価が必要な InterceptorAndDynamicMethodMatchers とともに適用されるインターセプター。この構造体に含まれている MethodMatchers は、おそらく静的に一致している限り、すでに一致していることが判明している必要があります。配列の受け渡しは約 10% 高速ですが、コードが複雑になります。そして、静的なポイントカットに対してのみ機能します。public final ObjectSE getProxy()
ProxyMethodInvocationProxyMethodInvocation の getProxy @Nullable public final ObjectSE getThis()
Joinpointたとえば、呼び出しのターゲットオブジェクト。
public final AccessibleObjectSE getStaticPart()
Joinpoint静的部分は、インターセプターのチェーンがインストールされているアクセス可能なオブジェクトです。
Joinpoint の getStaticPart public final MethodSE getMethod()
MethodInvocation の getMethod public final ObjectSE[] getArguments()
InvocationInvocation の getArguments public void setArguments(ObjectSE... arguments)
ProxyMethodInvocationProxyMethodInvocation の setArguments arguments - 引数配列 @Nullable public ObjectSE proceed() throws ThrowableSE
Joinpointこのメソッドの実装とセマンティクスは、実際のジョインポイント型によって異なります(子インターフェースを参照)。
Joinpoint の proceed ThrowableSE - ジョインポイントが例外をスローした場合 @Nullable protected ObjectSE invokeJoinpoint() throws ThrowableSE
ThrowableSE - ジョインポイントを呼び出すと例外が発生した場合 public MethodInvocation invocableClone()
この場合は、浅いコピーが必要です。同じインターセプターチェーンと他のオブジェクト参照を使用したいが、現在のインターセプターインデックスには独立した値が必要です。
ProxyMethodInvocation の invocableClone proceed() は、クローンごとに 1 回呼び出すことができます。Object.clone()SEpublic MethodInvocation invocableClone(ObjectSE... arguments)
この場合は、浅いコピーが必要です。同じインターセプターチェーンと他のオブジェクト参照を使用したいが、現在のインターセプターインデックスには独立した値が必要です。
ProxyMethodInvocation の invocableClone arguments - 複製された呼び出しが使用することになっている引数。元の引数をオーバーライドします proceed() は、クローンごとに 1 回呼び出すことができます。Object.clone()SEpublic void setUserAttribute(StringSE key, @Nullable ObjectSE value)
ProxyMethodInvocationこのような属性は、AOP フレームワーク自体では使用されません。これらは、特別なインターセプターで使用するために、呼び出しオブジェクトの一部として保持されます。
ProxyMethodInvocation の setUserAttribute key - 属性の名前 value - 属性の値、またはそれをリセットする null @Nullable public ObjectSE getUserAttribute(StringSE key)
ProxyMethodInvocationProxyMethodInvocation の getUserAttribute key - 属性の名前 null ProxyMethodInvocation.setUserAttribute(java.lang.String, java.lang.Object)public MapSE<StringSE,ObjectSE> getUserAttributes()
このマップは遅延して初期化され、AOP フレームワーク自体では使用されません。
null)public StringSE toString()
ObjectSE の toStringSE