public abstract class AbstractAspectJAdvice extends java.lang.Object implements Advice, AspectJPrecedenceInformation, java.io.Serializable
Advice
クラスの基本クラス。修飾子と型 | フィールドと説明 |
---|---|
protected java.lang.reflect.Method | aspectJAdviceMethod |
protected static java.lang.String | JOIN_POINT_KEY 現在のジョインポイントの ReflectiveMethodInvocation userAtributes マップ内で使用されるキー。 |
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
AbstractAspectJAdvice(java.lang.reflect.Method aspectJAdviceMethod, AspectJExpressionPointcut pointcut, AspectInstanceFactory aspectInstanceFactory) 指定されたアドバイスメソッド用に新しい AbstractAspectJAdvice を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected java.lang.Object[] | argBinding(org.aspectj.lang.JoinPoint jp, org.aspectj.weaver.tools.JoinPointMatch jpMatch, java.lang.Object returnValue, java.lang.Throwable ex) メソッド実行ジョインポイントで引数を取り、アドバイスメソッドに一連の引数を出力します。 |
Pointcut | buildSafePointcut() AspectJ アドバイスメソッド自体を除外する「安全な」ポイントカットを作成します。 |
void | calculateArgumentBindings() セットアップの一部としてできる限り多くの作業を行い、後続のアドバイス呼び出しでの引数バインディングが可能な限り高速になるようにします。 |
protected ParameterNameDiscoverer | createParameterNameDiscoverer() 引数のバインドに使用する ParameterNameDiscoverer を作成します。 |
static org.aspectj.lang.JoinPoint | currentJoinPoint() 現在の呼び出しのジョインポイントを遅延的にインスタンス化します。 |
java.lang.ClassLoader | getAspectClassLoader() アスペクトインスタンスの ClassLoader を返します。 |
AspectInstanceFactory | getAspectInstanceFactory() アスペクトインスタンスのファクトリを返します。 |
java.lang.reflect.Method | getAspectJAdviceMethod() AspectJ スタイルのアドバイスメソッドを返します。 |
java.lang.String | getAspectName() アドバイスが宣言されたアスペクトの名前(Bean)を返します。 |
int | getDeclarationOrder() アスペクト内のアドバイスメンバーの宣言順序を返します。 |
protected java.lang.reflect.Type | getDiscoveredReturningGenericType() |
protected java.lang.Class<?> | getDiscoveredReturningType() |
protected java.lang.Class<?> | getDiscoveredThrowingType() |
protected org.aspectj.lang.JoinPoint | getJoinPoint() 進行中のジョインポイントを返すためのアドバイスでオーバーライドされます。 |
protected org.aspectj.weaver.tools.JoinPointMatch | getJoinPointMatch() ディスパッチされているジョインポイントでの現在のジョインポイントの一致を取得します。 |
protected org.aspectj.weaver.tools.JoinPointMatch | getJoinPointMatch(ProxyMethodInvocation pmi) |
int | getOrder() このオブジェクトの順序値を取得します。 |
AspectJExpressionPointcut | getPointcut() AspectJ 式のポイントカットを返します。 |
protected java.lang.Object | invokeAdviceMethod(org.aspectj.lang.JoinPoint jp, org.aspectj.weaver.tools.JoinPointMatch jpMatch, java.lang.Object returnValue, java.lang.Throwable t) |
protected java.lang.Object | invokeAdviceMethod(org.aspectj.weaver.tools.JoinPointMatch jpMatch, java.lang.Object returnValue, java.lang.Throwable ex) advice メソッドを呼び出します。 |
protected java.lang.Object | invokeAdviceMethodWithGivenArgs(java.lang.Object[] args) |
void | setArgumentNames(java.lang.String argNames) 引数名がわかっている場合、このアドバイスオブジェクトの作成者によって設定されます。 |
void | setArgumentNamesFromStringArray(java.lang.String... args) |
void | setAspectName(java.lang.String name) アドバイスが宣言されたアスペクトの名前(Bean)を設定します。 |
void | setDeclarationOrder(int order) アスペクト内でこのアドバイスの宣言順序を設定します。 |
void | setReturningName(java.lang.String name) |
protected void | setReturningNameNoCheck(java.lang.String name) 引数バインディングの計算のために、返される名前をこのレベルで保持する必要があります。このメソッドにより、afterReturning アドバイスサブクラスが名前を設定できます。 |
void | setThrowingName(java.lang.String name) |
protected void | setThrowingNameNoCheck(java.lang.String name) 引数バインディングの計算のために、このレベルでスロー名を保持する必要があります。このメソッドにより、afterThrowing アドバイスサブクラスで名前を設定できます。 |
protected boolean | supportsProceedingJoinPoint() |
java.lang.String | toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
isAfterAdvice, isBeforeAdvice
protected static final java.lang.String JOIN_POINT_KEY
protected transient java.lang.reflect.Method aspectJAdviceMethod
public AbstractAspectJAdvice(java.lang.reflect.Method aspectJAdviceMethod, AspectJExpressionPointcut pointcut, AspectInstanceFactory aspectInstanceFactory)
aspectJAdviceMethod
- AspectJ スタイルのアドバイスメソッド pointcut
- AspectJ 式のポイントカット aspectInstanceFactory
- アスペクトインスタンスのファクトリ public static org.aspectj.lang.JoinPoint currentJoinPoint()
現在の ReflectiveMethodInvocation にアクセスできる場合は、使用しないでください(アラウンドアドバイス)。
public final java.lang.reflect.Method getAspectJAdviceMethod()
public final AspectJExpressionPointcut getPointcut()
public final Pointcut buildSafePointcut()
getPointcut()
public final AspectInstanceFactory getAspectInstanceFactory()
@Nullable public final java.lang.ClassLoader getAspectClassLoader()
public int getOrder()
Ordered
値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup
の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered
の getOrder
Ordered.HIGHEST_PRECEDENCE
, Ordered.LOWEST_PRECEDENCE
public void setAspectName(java.lang.String name)
public java.lang.String getAspectName()
AspectJPrecedenceInformation
AspectJPrecedenceInformation
の getAspectName
public void setDeclarationOrder(int order)
public int getDeclarationOrder()
AspectJPrecedenceInformation
AspectJPrecedenceInformation
の getDeclarationOrder
public void setArgumentNames(java.lang.String argNames)
たとえば、XML またはアドバイスアノテーションで明示的に指定されているためです。
argNames
- 引数名のカンマ区切りリスト public void setArgumentNamesFromStringArray(java.lang.String... args)
public void setReturningName(java.lang.String name)
protected void setReturningNameNoCheck(java.lang.String name)
protected java.lang.Class<?> getDiscoveredReturningType()
@Nullable protected java.lang.reflect.Type getDiscoveredReturningGenericType()
public void setThrowingName(java.lang.String name)
protected void setThrowingNameNoCheck(java.lang.String name)
protected java.lang.Class<?> getDiscoveredThrowingType()
public final void calculateArgumentBindings()
最初の引数の型が JoinPoint または ProceedingJoinPoint の場合、その位置に JoinPoint を渡します(アラウンドアドバイスの場合は ProceedingJoinPoint)。
最初の引数が JoinPoint.StaticPart
型の場合、その位置に JoinPoint.StaticPart
を渡します。
残りの引数は、指定されたジョインポイントでポイントカット評価によってバインドされる必要があります。引数名から値へのマップを取得します。どのアドバイスパラメーターをどの引数名にバインドする必要があるかを計算する必要があります。このバインディングを決定するには、ChainOfResponsibility に配置された複数の戦略があります。
protected boolean supportsProceedingJoinPoint()
protected ParameterNameDiscoverer createParameterNameDiscoverer()
デフォルトの実装では、DefaultParameterNameDiscoverer
を作成し、特別に構成された AspectJAdviceParameterNameDiscoverer
を追加します。
protected java.lang.Object[] argBinding(org.aspectj.lang.JoinPoint jp, @Nullable org.aspectj.weaver.tools.JoinPointMatch jpMatch, @Nullable java.lang.Object returnValue, @Nullable java.lang.Throwable ex)
jp
- 現在の JoinPointjpMatch
- この実行ジョインポイントに一致したジョインポイントの一致 returnValue
- メソッド実行からの戻り値 (null の可能性があります)ex
- メソッドの実行によってスローされた例外 (null の可能性があります)protected java.lang.Object invokeAdviceMethod(@Nullable org.aspectj.weaver.tools.JoinPointMatch jpMatch, @Nullable java.lang.Object returnValue, @Nullable java.lang.Throwable ex) throws java.lang.Throwable
jpMatch
- この実行ジョインポイントに一致した JoinPointMatchreturnValue
- メソッド実行からの戻り値 (null の可能性があります)ex
- メソッドの実行によってスローされた例外 (null の可能性があります)java.lang.Throwable
- 呼び出しが失敗した場合 protected java.lang.Object invokeAdviceMethod(org.aspectj.lang.JoinPoint jp, @Nullable org.aspectj.weaver.tools.JoinPointMatch jpMatch, @Nullable java.lang.Object returnValue, @Nullable java.lang.Throwable t) throws java.lang.Throwable
java.lang.Throwable
protected java.lang.Object invokeAdviceMethodWithGivenArgs(java.lang.Object[] args) throws java.lang.Throwable
java.lang.Throwable
protected org.aspectj.lang.JoinPoint getJoinPoint()
@Nullable protected org.aspectj.weaver.tools.JoinPointMatch getJoinPointMatch()
@Nullable protected org.aspectj.weaver.tools.JoinPointMatch getJoinPointMatch(ProxyMethodInvocation pmi)
public java.lang.String toString()
java.lang.Object
の toString