public class CachingMetadataReaderFactory extends SimpleMetadataReaderFactory
MetadataReaderFactory
interface,
caching a MetadataReader
instance per Spring Resource
handle
(i.e. per ".class" file).Modifier and Type | Class and Description |
---|---|
private static class |
CachingMetadataReaderFactory.LocalResourceCache |
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_CACHE_LIMIT
Default maximum number of entries for a local MetadataReader cache: 256
|
private java.util.Map<Resource,MetadataReader> |
metadataReaderCache
MetadataReader cache: either local or shared at the ResourceLoader level
|
Constructor and Description |
---|
CachingMetadataReaderFactory()
Create a new CachingMetadataReaderFactory for the default class loader,
using a local resource cache.
|
CachingMetadataReaderFactory(java.lang.ClassLoader classLoader)
Create a new CachingMetadataReaderFactory for the given
ClassLoader ,
using a local resource cache. |
CachingMetadataReaderFactory(ResourceLoader resourceLoader)
Create a new CachingMetadataReaderFactory for the given
ResourceLoader ,
using a shared resource cache if supported or a local resource cache otherwise. |
Modifier and Type | Method and Description |
---|---|
void |
clearCache()
Clear the local MetadataReader cache, if any, removing all cached class metadata.
|
int |
getCacheLimit()
Return the maximum number of entries for the MetadataReader cache.
|
MetadataReader |
getMetadataReader(Resource resource)
Obtain a MetadataReader for the given resource.
|
void |
setCacheLimit(int cacheLimit)
Specify the maximum number of entries for the MetadataReader cache.
|
getMetadataReader, getResourceLoader
public static final int DEFAULT_CACHE_LIMIT
private java.util.Map<Resource,MetadataReader> metadataReaderCache
public CachingMetadataReaderFactory()
public CachingMetadataReaderFactory(java.lang.ClassLoader classLoader)
ClassLoader
,
using a local resource cache.classLoader
- the ClassLoader to usepublic CachingMetadataReaderFactory(ResourceLoader resourceLoader)
ResourceLoader
,
using a shared resource cache if supported or a local resource cache otherwise.resourceLoader
- the Spring ResourceLoader to use
(also determines the ClassLoader to use)DefaultResourceLoader.getResourceCache(java.lang.Class<T>)
public void setCacheLimit(int cacheLimit)
Default is 256 for a local cache, whereas a shared cache is
typically unbounded. This method enforces a local resource cache,
even if the ResourceLoader
supports a shared resource cache.
public int getCacheLimit()
public MetadataReader getMetadataReader(Resource resource) throws java.io.IOException
MetadataReaderFactory
getMetadataReader
in interface MetadataReaderFactory
getMetadataReader
in class SimpleMetadataReaderFactory
resource
- the resource (pointing to a ".class" file)null
)java.io.IOException
- in case of I/O failurepublic void clearCache()