Class CachingMetadataReaderFactory
java.lang.Object
org.springframework.core.type.classreading.SimpleMetadataReaderFactory
org.springframework.core.type.classreading.CachingMetadataReaderFactory
- All Implemented Interfaces:
MetadataReaderFactory
Caching implementation of the
MetadataReaderFactory
interface,
caching a MetadataReader
instance per Spring Resource
handle
(i.e. per ".class" file).- Since:
- 2.5
- Author:
- Juergen Hoeller, Costin Leau
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Default maximum number of entries for a local MetadataReader cache: 256. -
Constructor Summary
ConstructorDescriptionCreate a new CachingMetadataReaderFactory for the default class loader, using a local resource cache.CachingMetadataReaderFactory
(ClassLoader classLoader) Create a new CachingMetadataReaderFactory for the givenClassLoader
, using a local resource cache.CachingMetadataReaderFactory
(ResourceLoader resourceLoader) Create a new CachingMetadataReaderFactory for the givenResourceLoader
, using a shared resource cache if supported or a local resource cache otherwise. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Clear the local MetadataReader cache, if any, removing all cached class metadata.int
Return the maximum number of entries for the MetadataReader cache.getMetadataReader
(Resource resource) Obtain a MetadataReader for the given resource.void
setCacheLimit
(int cacheLimit) Specify the maximum number of entries for the MetadataReader cache.Methods inherited from class org.springframework.core.type.classreading.SimpleMetadataReaderFactory
getMetadataReader, getResourceLoader
-
Field Details
-
DEFAULT_CACHE_LIMIT
public static final int DEFAULT_CACHE_LIMITDefault maximum number of entries for a local MetadataReader cache: 256.- See Also:
-
-
Constructor Details
-
CachingMetadataReaderFactory
public CachingMetadataReaderFactory()Create a new CachingMetadataReaderFactory for the default class loader, using a local resource cache. -
CachingMetadataReaderFactory
Create a new CachingMetadataReaderFactory for the givenClassLoader
, using a local resource cache.- Parameters:
classLoader
- the ClassLoader to use
-
CachingMetadataReaderFactory
Create a new CachingMetadataReaderFactory for the givenResourceLoader
, using a shared resource cache if supported or a local resource cache otherwise.- Parameters:
resourceLoader
- the Spring ResourceLoader to use (also determines the ClassLoader to use)- See Also:
-
-
Method Details
-
setCacheLimit
public void setCacheLimit(int cacheLimit) Specify the maximum number of entries for the MetadataReader cache.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. -
getCacheLimit
public int getCacheLimit()Return the maximum number of entries for the MetadataReader cache. -
getMetadataReader
Description copied from interface:MetadataReaderFactory
Obtain a MetadataReader for the given resource.- Specified by:
getMetadataReader
in interfaceMetadataReaderFactory
- Overrides:
getMetadataReader
in classSimpleMetadataReaderFactory
- Parameters:
resource
- the resource (pointing to a ".class" file)- Returns:
- a holder for the ClassReader instance (never
null
) - Throws:
IOException
- in case of I/O failure
-
clearCache
public void clearCache()Clear the local MetadataReader cache, if any, removing all cached class metadata.
-