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