## 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
`AopProxyUtils()`

Method Summary
`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.