org.springframework.aop.framework

## Class ProxyProcessorSupport

- java.lang.Object
- - org.springframework.aop.framework.ProxyConfig
  - - org.springframework.aop.framework.ProxyProcessorSupport

- All Implemented Interfaces:
    Serializable, AopInfrastructureBean, Aware, BeanClassLoaderAware, Ordered
  Direct Known Subclasses:
    AbstractAdvisingBeanPostProcessor, AbstractAutoProxyCreator

      public class ProxyProcessorSupport
      extends ProxyConfig
      implements Ordered, BeanClassLoaderAware, AopInfrastructureBean

  Base class with common functionality for proxy processors, in particular ClassLoader management and the `evaluateProxyInterfaces(java.lang.Class<?>, org.springframework.aop.framework.ProxyFactory)` algorithm.
  Since:
    4.1
  Author:
    Juergen Hoeller
  See Also:
    `AbstractAdvisingBeanPostProcessor`, `AbstractAutoProxyCreator`, Serialized Form

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProxyProcessorSupport()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `evaluateProxyInterfaces(Class<?> beanClass, ProxyFactory proxyFactory)` Check the interfaces on the given bean class and apply them to the `ProxyFactory`, if appropriate.
    `int` | `getOrder()` Get the order value of this object.
    `protected ClassLoader` | `getProxyClassLoader()` Return the configured proxy ClassLoader for this processor.
    `protected boolean` | `isConfigurationCallbackInterface(Class<?> ifc)` Determine whether the given interface is just a container callback and therefore not to be considered as a reasonable proxy interface.
    `protected boolean` | `isInternalLanguageInterface(Class<?> ifc)` Determine whether the given interface is a well-known internal language interface and therefore not to be considered as a reasonable proxy interface.
    `void` | `setBeanClassLoader(ClassLoader classLoader)` Callback that supplies the bean `class loader` to a bean instance.
    `void` | `setOrder(int order)` Set the ordering which will apply to this processor's implementation of `Ordered`, used when applying multiple processors.
    `void` | `setProxyClassLoader(ClassLoader classLoader)` Set the ClassLoader to generate the proxy class in.

    - ### Methods inherited from class org.springframework.aop.framework.ProxyConfig

      `copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString`

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

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

- - ### Constructor Detail

    - #### ProxyProcessorSupport

          public ProxyProcessorSupport()

  - ### Method Detail

    - #### setOrder

          public void setOrder(int order)

      Set the ordering which will apply to this processor's implementation of `Ordered`, used when applying multiple processors.

      The default value is `Ordered.LOWEST_PRECEDENCE`, meaning non-ordered.

      Parameters:
        `order` - the ordering value

    - #### getOrder

          public int getOrder()

      Description copied from interface: `Ordered`
      Get the order value of this object.

      Higher values are interpreted as lower priority. As a consequence, the object with the lowest value has the highest priority (somewhat analogous to Servlet `load-on-startup` values).

      Same order values will result in arbitrary sort positions for the affected objects.

      Specified by:
        `getOrder` in interface `Ordered`
      Returns:
        the order value
      See Also:
        `Ordered.HIGHEST_PRECEDENCE`, `Ordered.LOWEST_PRECEDENCE`

    - #### setProxyClassLoader

          public void setProxyClassLoader(@Nullable
                                          ClassLoader classLoader)

      Set the ClassLoader to generate the proxy class in.

      Default is the bean ClassLoader, i.e. the ClassLoader used by the containing `BeanFactory` for loading all bean classes. This can be overridden here for specific proxies.

    - #### getProxyClassLoader

          @Nullable
          protected ClassLoader getProxyClassLoader()

      Return the configured proxy ClassLoader for this processor.

    - #### setBeanClassLoader

          public void setBeanClassLoader(ClassLoader classLoader)

      Description copied from interface: `BeanClassLoaderAware`
      Callback that supplies the bean `class loader` to a bean instance.

      Invoked after the population of normal bean properties but before an initialization callback such as `InitializingBean's` `InitializingBean.afterPropertiesSet()` method or a custom init-method.

      Specified by:
        `setBeanClassLoader` in interface `BeanClassLoaderAware`
      Parameters:
        `classLoader` - the owning class loader

    - #### evaluateProxyInterfaces

          protected void evaluateProxyInterfaces(Class<?> beanClass,
                                                 ProxyFactory proxyFactory)

      Check the interfaces on the given bean class and apply them to the `ProxyFactory`, if appropriate.

      Calls `isConfigurationCallbackInterface(java.lang.Class<?>)` and `isInternalLanguageInterface(java.lang.Class<?>)` to filter for reasonable proxy interfaces, falling back to a target-class proxy otherwise.

      Parameters:
        `beanClass` - the class of the bean
        `proxyFactory` - the ProxyFactory for the bean

    - #### isConfigurationCallbackInterface

          protected boolean isConfigurationCallbackInterface(Class<?> ifc)

      Determine whether the given interface is just a container callback and therefore not to be considered as a reasonable proxy interface.

      If no reasonable proxy interface is found for a given bean, it will get proxied with its full target class, assuming that as the user's intention.

      Parameters:
        `ifc` - the interface to check
      Returns:
        whether the given interface is just a container callback

    - #### isInternalLanguageInterface

          protected boolean isInternalLanguageInterface(Class<?> ifc)

      Determine whether the given interface is a well-known internal language interface and therefore not to be considered as a reasonable proxy interface.

      If no reasonable proxy interface is found for a given bean, it will get proxied with its full target class, assuming that as the user's intention.

      Parameters:
        `ifc` - the interface to check
      Returns:
        whether the given interface is an internal language interface