org.springframework.aop.framework

## Class AopProxyUtils

- java.lang.Object
- - org.springframework.aop.framework.AopProxyUtils

    public abstract class AopProxyUtils
    extends Object

Utility methods for AOP proxy factories. Mainly for internal use within the AOP framework.

See `AopUtils` for a collection of generic AOP utility methods which do not depend on AOP framework internals.

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  `AopUtils`

### Constructor Summary

Constructors
Constructor and Description
`AopProxyUtils()`

### Method Summary

Methods
`static Class[]` `completeProxiedInterfaces(AdvisedSupport advised)` Determine the complete set of interfaces to proxy for the given AOP configuration.
`static boolean` `equalsAdvisors(AdvisedSupport a, AdvisedSupport b)` Check equality of the advisors behind the given AdvisedSupport objects.
`static boolean` `equalsInProxy(AdvisedSupport a, AdvisedSupport b)` Check equality of the proxies behind the given AdvisedSupport objects.
`static boolean` `equalsProxiedInterfaces(AdvisedSupport a, AdvisedSupport b)` Check equality of the proxied interfaces behind the given AdvisedSupport objects.
`static Class[]` `proxiedUserInterfaces(Object proxy)` Extract the user-specified interfaces that the given proxy implements, i.e.
`static Class<?>` `ultimateTargetClass(Object candidate)` Determine the ultimate target class of the given bean instance, traversing not only a top-level proxy but any number of nested proxies as well - as long as possible without side effects, that is, just for singleton targets.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### AopProxyUtils

    public AopProxyUtils()

### Method Detail

#### ultimateTargetClass

    public static Class<?> ultimateTargetClass(Object candidate)

Determine the ultimate target class of the given bean instance, traversing not only a top-level proxy but any number of nested proxies as well - as long as possible without side effects, that is, just for singleton targets.

Parameters:
  `candidate` - the instance to check (might be an AOP proxy)
Returns:
  the target class (or the plain class of the given object as fallback; never `null`)
See Also:
  `TargetClassAware.getTargetClass()`, `Advised.getTargetSource()`

#### completeProxiedInterfaces

    public static Class[] completeProxiedInterfaces(AdvisedSupport advised)

Determine the complete set of interfaces to proxy for the given AOP configuration.

This will always add the `Advised` interface unless the AdvisedSupport's `"opaque"` flag is on. Always adds the `SpringProxy` marker interface.

Returns:
  the complete set of interfaces to proxy
See Also:
  `Advised`, `SpringProxy`

#### proxiedUserInterfaces

    public static Class[] proxiedUserInterfaces(Object proxy)

Extract the user-specified interfaces that the given proxy implements, i.e. all non-Advised interfaces that the proxy implements.

Parameters:
  `proxy` - the proxy to analyze (usually a JDK dynamic proxy)
Returns:
  all user-specified interfaces that the proxy implements, in the original order (never `null` or empty)
See Also:
  `Advised`

#### equalsInProxy

    public static boolean equalsInProxy(AdvisedSupport a,
                        AdvisedSupport b)

Check equality of the proxies behind the given AdvisedSupport objects. Not the same as equality of the AdvisedSupport objects: rather, equality of interfaces, advisors and target sources.

#### equalsProxiedInterfaces

    public static boolean equalsProxiedInterfaces(AdvisedSupport a,
                                  AdvisedSupport b)

Check equality of the proxied interfaces behind the given AdvisedSupport objects.

#### equalsAdvisors

    public static boolean equalsAdvisors(AdvisedSupport a,
                         AdvisedSupport b)

Check equality of the advisors behind the given AdvisedSupport objects.