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
    Modifier and Type | Method and Description
    --- | ---
    `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.