public class PackageScanClassResolver
extends java.lang.Object
| 构造器和说明 |
|---|
PackageScanClassResolver() |
PackageScanClassResolver(org.springframework.context.ApplicationContext applicationContext) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addClassLoader(java.lang.ClassLoader classLoader) |
void |
addFilter(PackageScanFilter filter) |
protected void |
addFoundClass(java.lang.Class<?> type) |
protected void |
addFoundClass(java.lang.String packageName,
java.lang.Class<?> type) |
protected java.net.URL |
customResourceLocator(java.net.URL url) |
java.util.Set<java.lang.String> |
detectPackagesToScan(java.lang.String[] basePackages) |
protected void |
find(PackageScanFilter test,
java.lang.String packageName,
java.util.Set<java.lang.Class<?>> classes) |
protected void |
findAllClasses(java.lang.String packageName,
java.lang.ClassLoader loader) |
java.util.Set<java.lang.Class<?>> |
findByFilter(PackageScanFilter filter,
java.lang.String... packageNames) |
java.util.Set<java.lang.Class<?>> |
findImplementations(java.lang.Class parent,
java.lang.String... packageNames) |
protected void |
findInAllClasses(PackageScanFilter test,
java.lang.String packageName,
java.util.Set<java.lang.Class<?>> classes) |
java.util.Set<java.lang.ClassLoader> |
getClassLoaders() |
protected java.util.Set<java.lang.Class> |
getFoundClasses(java.lang.String packageName) |
protected java.util.Enumeration<java.net.URL> |
getResources(java.lang.ClassLoader loader,
java.lang.String packageName)
Strategy to get the resources by the given classloader.
|
protected void |
loadImplementationsInJar(java.lang.String parentPackage,
java.io.InputStream parentFileStream,
java.lang.ClassLoader loader,
java.lang.String parentFileName,
java.lang.String grandparentFileName)
Finds matching classes within a jar files that contains a folder
structure matching the package structure.
|
void |
removeFilter(PackageScanFilter filter) |
void |
setApplicationContext(org.springframework.context.ApplicationContext applicationContext) |
void |
setClassLoaders(java.util.Set<java.lang.ClassLoader> classLoaders) |
public PackageScanClassResolver()
public PackageScanClassResolver(org.springframework.context.ApplicationContext applicationContext)
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
@NotNull public java.util.Set<java.lang.String> detectPackagesToScan(java.lang.String[] basePackages)
public void addClassLoader(java.lang.ClassLoader classLoader)
public void addFilter(PackageScanFilter filter)
public void removeFilter(PackageScanFilter filter)
public java.util.Set<java.lang.ClassLoader> getClassLoaders()
public void setClassLoaders(java.util.Set<java.lang.ClassLoader> classLoaders)
public java.util.Set<java.lang.Class<?>> findImplementations(java.lang.Class parent,
java.lang.String... packageNames)
public java.util.Set<java.lang.Class<?>> findByFilter(PackageScanFilter filter, java.lang.String... packageNames)
protected void find(PackageScanFilter test, java.lang.String packageName, java.util.Set<java.lang.Class<?>> classes)
protected void findAllClasses(java.lang.String packageName,
java.lang.ClassLoader loader)
protected void findInAllClasses(PackageScanFilter test, java.lang.String packageName, java.util.Set<java.lang.Class<?>> classes)
protected void addFoundClass(java.lang.Class<?> type)
protected void addFoundClass(java.lang.String packageName,
java.lang.Class<?> type)
protected java.util.Set<java.lang.Class> getFoundClasses(java.lang.String packageName)
protected java.net.URL customResourceLocator(java.net.URL url)
protected java.util.Enumeration<java.net.URL> getResources(java.lang.ClassLoader loader,
java.lang.String packageName)
throws java.io.IOException
loader - the classloaderpackageName - the packagename for the package to loadjava.io.IOException - is thrown by the classloaderprotected void loadImplementationsInJar(java.lang.String parentPackage,
java.io.InputStream parentFileStream,
java.lang.ClassLoader loader,
java.lang.String parentFileName,
java.lang.String grandparentFileName)
throws java.io.IOException
Any nested JAR files found inside this JAR will be assumed to also be on the classpath and will be recursively examined for classes in `parentPackage`.
parentPackage - the parent package under which classes must be in order to
be consideredparentFileStream - the inputstream of the jar file to be examined for classesloader - a classloader which can load classes contained within the JAR fileparentFileName - a unique name for the parentFileStream, to be used for caching.
This is the URL of the parentFileStream, if it comes from a URL,
or a composite ID if we are currently examining a nested JAR.grandparentFileName - grandparentFileNamejava.io.IOException - IOException