クラス ReflectiveMethodInvocation

java.lang.ObjectSE
org.springframework.aop.framework.ReflectiveMethodInvocation
実装されたすべてのインターフェース:
CloneableSEInvocationJoinpointMethodInvocationProxyMethodInvocation

public class ReflectiveMethodInvocation extends ObjectSE implements ProxyMethodInvocation, CloneableSE
Spring の AOP Alliance 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
関連事項:
  • フィールドの詳細

    • proxy

      protected final ObjectSE proxy
    • target

      @Nullable protected final ObjectSE target
    • method

      protected final MethodSE method
    • arguments

      protected ObjectSE[] arguments
    • interceptorsAndDynamicMethodMatchers

      protected final ListSE<?> 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

      public final ObjectSE getProxy()
      インターフェースからコピーされた説明: ProxyMethodInvocation
      このメソッド呼び出しが行われたプロキシを返します。
      次で指定:
      インターフェース ProxyMethodInvocationgetProxy 
      戻り値:
      元のプロキシオブジェクト
    • getThis

      @Nullable public final ObjectSE getThis()
      インターフェースからコピーされた説明: Joinpoint
      現在のジョインポイントの静的部分を保持するオブジェクトを返します。

      たとえば、呼び出しのターゲットオブジェクト。

      次で指定:
      インターフェース JoinpointgetThis 
      戻り値:
      オブジェクト (アクセス可能なオブジェクトが静的な場合は null にすることができます)
    • getStaticPart

      public final AccessibleObjectSE getStaticPart()
      インターフェースからコピーされた説明: Joinpoint
      このジョインポイントの静的部分を返します。

      静的部分は、インターセプターのチェーンがインストールされているアクセス可能なオブジェクトです。

      次で指定:
      インターフェース JoinpointgetStaticPart 
    • getMethod

      public final MethodSE getMethod()
      プロキシされたインターフェースで呼び出されたメソッドを返します。そのインターフェースの基礎となる実装で呼び出されたメソッドに対応する場合と対応しない場合があります。
      次で指定:
      インターフェース MethodInvocationgetMethod 
      戻り値:
      呼び出されるメソッド
    • getArguments

      public final ObjectSE[] getArguments()
      インターフェースからコピーされた説明: Invocation
      引数を配列オブジェクトとして取得します。この配列内の要素値を変更して引数を変更することが可能です。
      次で指定:
      インターフェース InvocationgetArguments 
      戻り値:
      呼び出しの引数
    • setArguments

      public void setArguments(ObjectSE... arguments)
      インターフェースからコピーされた説明: ProxyMethodInvocation
      このチェーンのアドバイスで、以降の呼び出しで使用される引数を設定します。
      次で指定:
      インターフェース ProxyMethodInvocationsetArguments 
      パラメーター:
      arguments - 引数配列
    • proceed

      @Nullable public ObjectSE proceed() throws ThrowableSE
      インターフェースからコピーされた説明: Joinpoint
      チェーンの次のインターセプターに進みます。

      このメソッドの実装とセマンティクスは、実際のジョインポイント型によって異なります(子インターフェースを参照)。

      次で指定:
      インターフェース Joinpointproceed 
      戻り値:
      子インターフェースの進行定義を見る
      例外:
      ThrowableSE - ジョインポイントが例外をスローした場合
    • invokeJoinpoint

      @Nullable protected ObjectSE invokeJoinpoint() throws ThrowableSE
      リフレクションを使用してジョインポイントを呼び出します。サブクラスはこれをオーバーライドして、カスタム呼び出しを使用できます。
      戻り値:
      ジョインポイントの戻り値
      例外:
      ThrowableSE - ジョインポイントを呼び出すと例外が発生した場合
    • invocableClone

      public MethodInvocation invocableClone()
      この実装は、元の引数配列の独立したコピーを含む、この呼び出しオブジェクトの浅いコピーを返します。

      この場合は、浅いコピーが必要です。同じインターセプターチェーンと他のオブジェクト参照を使用したいが、現在のインターセプターインデックスには独立した値が必要です。

      次で指定:
      インターフェース ProxyMethodInvocationinvocableClone 
      戻り値:
      この呼び出しの呼び出し可能なクローン。proceed() は、クローンごとに 1 回呼び出すことができます。
      関連事項:
    • invocableClone

      public MethodInvocation invocableClone(ObjectSE... arguments)
      この実装は、クローンに指定された引数配列を使用して、この呼び出しオブジェクトの浅いコピーを返します。

      この場合は、浅いコピーが必要です。同じインターセプターチェーンと他のオブジェクト参照を使用したいが、現在のインターセプターインデックスには独立した値が必要です。

      次で指定:
      インターフェース ProxyMethodInvocationinvocableClone 
      パラメーター:
      arguments - 複製された呼び出しが使用することになっている引数。元の引数をオーバーライドします
      戻り値:
      この呼び出しの呼び出し可能なクローン。proceed() は、クローンごとに 1 回呼び出すことができます。
      関連事項:
    • setUserAttribute

      public void setUserAttribute(StringSE key, @Nullable ObjectSE value)
      インターフェースからコピーされた説明: ProxyMethodInvocation
      指定された値を持つ指定されたユーザー属性をこの呼び出しに追加します。

      このような属性は、AOP フレームワーク自体では使用されません。これらは、特別なインターセプターで使用するために、呼び出しオブジェクトの一部として保持されます。

      次で指定:
      インターフェース ProxyMethodInvocationsetUserAttribute 
      パラメーター:
      key - 属性の名前
      value - 属性の値、またはそれをリセットする null 
    • getUserAttribute

      @Nullable public ObjectSE getUserAttribute(StringSE key)
      インターフェースからコピーされた説明: ProxyMethodInvocation
      指定されたユーザー属性の値を返します。
      次で指定:
      インターフェース ProxyMethodInvocationgetUserAttribute 
      パラメーター:
      key - 属性の名前
      戻り値:
      属性の値、または設定されていない場合は null 
      関連事項:
    • getUserAttributes

      public MapSE<StringSE,ObjectSE> getUserAttributes()
      この呼び出しに関連付けられているユーザー属性を返します。このメソッドは、ThreadLocal の呼び出しに代わる方法を提供します。

      このマップは遅延して初期化され、AOP フレームワーク自体では使用されません。

      戻り値:
      この呼び出しに関連付けられているユーザー属性 (非 null)
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString