org.springframework.core

## Class DecoratingClassLoader

- java.lang.Object
- - java.lang.ClassLoader
  - - org.springframework.core.DecoratingClassLoader

- Direct Known Subclasses:
    OverridingClassLoader, ShadowingClassLoader

      public abstract class DecoratingClassLoader
      extends ClassLoader

  Base class for decorating ClassLoaders such as `OverridingClassLoader` and `ShadowingClassLoader`, providing common handling of excluded packages and classes.
  Since:
    2.5.2
  Author:
    Juergen Hoeller, Rod Johnson

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DecoratingClassLoader()` Create a new DecoratingClassLoader with no parent ClassLoader.
    `DecoratingClassLoader(ClassLoader parent)` Create a new DecoratingClassLoader using the given parent ClassLoader for delegation.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `excludeClass(String className)` Add a class name to exclude from decoration (e.g.
    `void` | `excludePackage(String packageName)` Add a package name to exclude from decoration (e.g.
    `protected boolean` | `isExcluded(String className)` Determine whether the specified class is excluded from decoration by this class loader.

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

      `clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners`

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

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

- - ### Constructor Detail

    - #### DecoratingClassLoader

          public DecoratingClassLoader()

      Create a new DecoratingClassLoader with no parent ClassLoader.

    - #### DecoratingClassLoader

          public DecoratingClassLoader(ClassLoader parent)

      Create a new DecoratingClassLoader using the given parent ClassLoader for delegation.

  - ### Method Detail

    - #### excludePackage

          public void excludePackage(String packageName)

      Add a package name to exclude from decoration (e.g. overriding).

      Any class whose fully-qualified name starts with the name registered here will be handled by the parent ClassLoader in the usual fashion.

      Parameters:
        `packageName` - the package name to exclude

    - #### excludeClass

          public void excludeClass(String className)

      Add a class name to exclude from decoration (e.g. overriding).

      Any class name registered here will be handled by the parent ClassLoader in the usual fashion.

      Parameters:
        `className` - the class name to exclude

    - #### isExcluded

          protected boolean isExcluded(String className)

      Determine whether the specified class is excluded from decoration by this class loader.

      The default implementation checks against excluded packages and classes.

      Parameters:
        `className` - the class name to check
      Returns:
        whether the specified class is eligible
      See Also:
        `excludePackage(java.lang.String)`, `excludeClass(java.lang.String)`