Class ShadowingClassLoader
- java.lang.Object
- java.lang.ClassLoader
- org.springframework.core.DecoratingClassLoader
- org.springframework.instrument.classloading.ShadowingClassLoader
- Direct Known Subclasses:
ResourceOverridingShadowingClassLoader
public class ShadowingClassLoader extends DecoratingClassLoader
ClassLoader decorator that shadows an enclosing ClassLoader, applying registered transformers to all affected classes.- Since:
- 2.0
- Author:
- Rob Harrop, Juergen Hoeller, Costin Leau
- See Also:
addTransformer(java.lang.instrument.ClassFileTransformer)
,OverridingClassLoader
Field Summary
Fields Modifier and Type Field Description static String[]
DEFAULT_EXCLUDED_PACKAGES
Packages that are excluded by default.
Constructor Summary
Constructors Constructor Description ShadowingClassLoader(ClassLoader enclosingClassLoader)
Create a new ShadowingClassLoader, decorating the given ClassLoader, applyingDEFAULT_EXCLUDED_PACKAGES
.ShadowingClassLoader(ClassLoader enclosingClassLoader, boolean defaultExcludes)
Create a new ShadowingClassLoader, decorating the given ClassLoader.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addTransformer(ClassFileTransformer transformer)
Add the given ClassFileTransformer to the list of transformers that this ClassLoader will apply.void
copyTransformers(ShadowingClassLoader other)
Copy all ClassFileTransformers from the given ClassLoader to the list of transformers that this ClassLoader will apply.URL
getResource(String name)
InputStream
getResourceAsStream(String name)
Enumeration<URL>
getResources(String name)
protected boolean
isEligibleForShadowing(String className)
Determine whether the specified class is eligible for shadowing by this class loader.Class<?>
loadClass(String name)
Methods inherited from class org.springframework.core.DecoratingClassLoader
excludeClass, excludePackage, isExcluded
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
Field Detail
DEFAULT_EXCLUDED_PACKAGES
public static final String[] DEFAULT_EXCLUDED_PACKAGES
Packages that are excluded by default.
Constructor Detail
ShadowingClassLoader
public ShadowingClassLoader(ClassLoader enclosingClassLoader)
Create a new ShadowingClassLoader, decorating the given ClassLoader, applyingDEFAULT_EXCLUDED_PACKAGES
.- Parameters:
enclosingClassLoader
- the ClassLoader to decorate- See Also:
ShadowingClassLoader(ClassLoader, boolean)
ShadowingClassLoader
public ShadowingClassLoader(ClassLoader enclosingClassLoader, boolean defaultExcludes)
Create a new ShadowingClassLoader, decorating the given ClassLoader.- Parameters:
enclosingClassLoader
- the ClassLoader to decoratedefaultExcludes
- whether to applyDEFAULT_EXCLUDED_PACKAGES
- Since:
- 4.3.8
Method Detail
addTransformer
public void addTransformer(ClassFileTransformer transformer)
Add the given ClassFileTransformer to the list of transformers that this ClassLoader will apply.- Parameters:
transformer
- the ClassFileTransformer
copyTransformers
public void copyTransformers(ShadowingClassLoader other)
Copy all ClassFileTransformers from the given ClassLoader to the list of transformers that this ClassLoader will apply.- Parameters:
other
- the ClassLoader to copy from
loadClass
public Class<?> loadClass(String name) throws ClassNotFoundException
- Overrides:
loadClass
in classClassLoader
- Throws:
ClassNotFoundException
isEligibleForShadowing
protected boolean isEligibleForShadowing(String className)
Determine whether the specified class is eligible for shadowing by this class loader.- Parameters:
className
- the class name to check- Returns:
- whether the specified class is eligible
- See Also:
DecoratingClassLoader.isExcluded(java.lang.String)
getResource
public URL getResource(String name)
- Overrides:
getResource
in classClassLoader
getResourceAsStream
@Nullable public InputStream getResourceAsStream(String name)
- Overrides:
getResourceAsStream
in classClassLoader
getResources
public Enumeration<URL> getResources(String name) throws IOException
- Overrides:
getResources
in classClassLoader
- Throws:
IOException