クラス AopUtils
主に Spring の AOP サポート内での内部使用のため。
Spring の AOP フレームワーク実装の内部に依存するフレームワーク固有の AOP ユーティリティメソッドのコレクションについては、AopProxyUtils
を参照してください。
- 作成者:
- Rod Johnson, Juergen Hoeller, Rob Harrop
- 関連事項:
コンストラクターのサマリー
コンストラクターメソッドのサマリー
修飾子と型メソッド説明static boolean
与えられたアドバイザーは与えられたクラスにまったく応募できますか? これは、クラスのアドバイザーを最適化するために使用できるため、重要なテストです。static boolean
与えられたアドバイザーは与えられたクラスにまったく適用できますか?static boolean
特定のポイントカットを特定のクラスに適用できますか?static boolean
特定のポイントカットを特定のクラスに適用できますか?findAdvisorsThatCanApply
(ListSE<Advisor> candidateAdvisors, ClassSE<?> clazz) 特定のクラスに適用可能なcandidateAdvisors
リストのサブリストを決定します。static MethodSE
getMostSpecificMethod
(MethodSE method, ClassSE<?> targetClass) インターフェースから取得できるメソッドと、現在の AOP 呼び出しで使用されるターゲットクラスを指定すると、対応するターゲットメソッドがあればそれを見つけます。static ClassSE<?>
getTargetClass
(ObjectSE candidate) AOP プロキシである可能性がある、指定された Bean インスタンスのターゲットクラスを決定します。static ObjectSE
invokeJoinpointUsingReflection
(ObjectSE target, MethodSE method, ObjectSE[] args) AOP メソッド呼び出しの一部として、指定されたターゲットをリフレクション経由で呼び出します。static boolean
isAopProxy
(ObjectSE object) 指定されたオブジェクトが JDK 動的プロキシまたは CGLIB プロキシかどうかを確認します。static boolean
isCglibProxy
(ObjectSE object) 指定されたオブジェクトが CGLIB プロキシかどうかを確認します。static boolean
isEqualsMethod
(MethodSE method) 指定されたメソッドが「等しい」メソッドであるかどうかを判別します。static boolean
isFinalizeMethod
(MethodSE method) 指定されたメソッドが "finalize" メソッドであるかどうかを判別します。static boolean
isHashCodeMethod
(MethodSE method) 指定されたメソッドが "hashCode" メソッドであるかどうかを判断します。static boolean
isJdkDynamicProxy
(ObjectSE object) 指定されたオブジェクトが JDK 動的プロキシかどうかを確認します。static boolean
isToStringMethod
(MethodSE method) 指定されたメソッドが "toString" メソッドであるかどうかを判断します。static MethodSE
selectInvocableMethod
(MethodSE method, ClassSE<?> targetType) ターゲット型で呼び出し可能なメソッドを選択します。ターゲット型で実際に公開されている場合は特定のメソッド自体、またはターゲット型のインターフェースの 1 つまたはターゲット型自体で対応するメソッドを選択します。
コンストラクターの詳細
AopUtils
public AopUtils()
メソッドの詳細
isAopProxy
指定されたオブジェクトが JDK 動的プロキシまたは CGLIB プロキシかどうかを確認します。このメソッドはさらに、指定されたオブジェクトが
SpringProxy
のインスタンスであるかどうかをチェックします。- パラメーター:
object
- チェックするオブジェクト- 関連事項:
isJdkDynamicProxy
指定されたオブジェクトが JDK 動的プロキシかどうかを確認します。このメソッドは、指定されたオブジェクトが
SpringProxy
のインスタンスであるかどうかをさらにチェックすることにより、Proxy.isProxyClass(Class)
SE の実装を超えています。- パラメーター:
object
- チェックするオブジェクト- 関連事項:
isCglibProxy
指定されたオブジェクトが CGLIB プロキシかどうかを確認します。このメソッドは、指定されたオブジェクトが
SpringProxy
のインスタンスであるかどうかをさらにチェックすることにより、ClassUtils.isCglibProxy(Object)
の実装を超えています。- パラメーター:
object
- チェックするオブジェクト- 関連事項:
getTargetClass
AOP プロキシである可能性がある、指定された Bean インスタンスのターゲットクラスを決定します。AOP プロキシのターゲットクラスを返すか、それ以外の場合はプレーンクラスを返します。
- パラメーター:
candidate
- チェックするインスタンス (AOP プロキシである可能性があります)- 戻り値:
- ターゲットクラス (または、フォールバックとして指定されたオブジェクトのプレーンクラス。
null
) - 関連事項:
selectInvocableMethod
ターゲット型で呼び出し可能なメソッドを選択します。ターゲット型で実際に公開されている場合は特定のメソッド自体、またはターゲット型のインターフェースの 1 つまたはターゲット型自体で対応するメソッドを選択します。- パラメーター:
method
- チェックする方法targetType
- メソッドを検索するターゲット型 (通常は AOP プロキシ)- 戻り値:
- ターゲット型の対応する呼び出し可能なメソッド
- 例外:
IllegalStateExceptionSE
- 指定されたメソッドが指定されたターゲット型で起動できない場合 (通常はプロキシの不一致が原因です)- 導入:
- 4.3
- 関連事項:
isEqualsMethod
指定されたメソッドが「等しい」メソッドであるかどうかを判別します。isHashCodeMethod
指定されたメソッドが "hashCode" メソッドであるかどうかを判断します。- 関連事項:
isToStringMethod
指定されたメソッドが "toString" メソッドであるかどうかを判断します。- 関連事項:
isFinalizeMethod
指定されたメソッドが "finalize" メソッドであるかどうかを判別します。- 関連事項:
getMostSpecificMethod
インターフェースから取得される可能性のあるメソッドと、現在の AOP 呼び出しで使用されているターゲットクラスを指定して、対応するターゲットメソッドがある場合はそれを見つけます。例: メソッドはIFoo.bar()
で、ターゲットクラスはDefaultFoo
です。この場合、メソッドはDefaultFoo.bar()
になります。これにより、そのメソッドの属性を見つけることができます。注 :
ClassUtils.getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)
とは対照的に、このメソッドは、 元のメソッド定義から属性を取得するためにブリッジメソッドを解決します。- パラメーター:
method
- 呼び出されるメソッド。インターフェースから取得される場合がありますtargetClass
- 現在の呼び出しのターゲットクラス。null
である場合と、メソッドを実装していない場合があります。- 戻り値:
- 特定のターゲットメソッド、または
targetClass
が実装していないかnull
である場合は元のメソッド - 関連事項:
canApply
特定のポイントカットを特定のクラスに適用できますか?これは、クラスのポイントカットを最適化するために使用できるため、重要なテストです。
- パラメーター:
pc
- チェックする静的または動的ポイントカットtargetClass
- テストするクラス- 戻り値:
- ポイントカットが任意のメソッドに適用できるかどうか
canApply
特定のポイントカットを特定のクラスに適用できますか?これは、クラスのポイントカットを最適化するために使用できるため、重要なテストです。
- パラメーター:
pc
- チェックする静的または動的ポイントカットtargetClass
- テストするクラスhasIntroductions
- この Bean のアドバイザーチェーンに導入が含まれているかどうか- 戻り値:
- ポイントカットが任意のメソッドに適用できるかどうか
canApply
与えられたアドバイザーは与えられたクラスにまったく応募できますか? これは、クラスのアドバイザーを最適化するために使用できるため、重要なテストです。- パラメーター:
advisor
- チェックするアドバイザーtargetClass
- テストしているクラス- 戻り値:
- ポイントカットが任意のメソッドに適用できるかどうか
canApply
与えられたアドバイザーは与えられたクラスにまったく適用できますか?これは、クラスのアドバイザーを最適化するために使用できるため、重要なテストです。このバージョンでは、導入(IntroductionAwareMethodMatchers の場合)も考慮されています。
- パラメーター:
advisor
- チェックするアドバイザーtargetClass
- テストしているクラスhasIntroductions
- この Bean のアドバイザーチェーンに導入が含まれているかどうか- 戻り値:
- ポイントカットが任意のメソッドに適用できるかどうか
findAdvisorsThatCanApply
public static ListSE<Advisor> findAdvisorsThatCanApply(ListSE<Advisor> candidateAdvisors, ClassSE<?> clazz) 特定のクラスに適用可能なcandidateAdvisors
リストのサブリストを決定します。- パラメーター:
candidateAdvisors
- 評価するアドバイザーclazz
- ターゲットクラス- 戻り値:
- 指定されたクラスのオブジェクトに適用できるアドバイザのサブリスト (そのまま受信リストである可能性があります)
invokeJoinpointUsingReflection
@Nullable public static ObjectSE invokeJoinpointUsingReflection(@Nullable ObjectSE target, MethodSE method, ObjectSE[] args) throws ThrowableSE AOP メソッド呼び出しの一部として、指定されたターゲットをリフレクション経由で呼び出します。- パラメーター:
target
- ターゲットオブジェクトmethod
- 呼び出すメソッドargs
- メソッドの引数- 戻り値:
- 呼び出し結果(ある場合)
- 例外:
ThrowableSE
- ターゲットメソッドによってスローされた場合AopInvocationException
- 反射エラーの場合