Class CachingMetadataReaderFactory

java.lang.Object
org.springframework.core.type.classreading.SimpleMetadataReaderFactory
org.springframework.core.type.classreading.CachingMetadataReaderFactory
All Implemented Interfaces:
MetadataReaderFactory

public class CachingMetadataReaderFactory extends SimpleMetadataReaderFactory
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 Details

    • DEFAULT_CACHE_LIMIT

      public static final int DEFAULT_CACHE_LIMIT
      Default 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

      public CachingMetadataReaderFactory(@Nullable ClassLoader classLoader)
      Create a new CachingMetadataReaderFactory for the given ClassLoader, using a local resource cache.
      Parameters:
      classLoader - the ClassLoader to use
    • CachingMetadataReaderFactory

      public CachingMetadataReaderFactory(@Nullable ResourceLoader resourceLoader)
      Create a new CachingMetadataReaderFactory for the given ResourceLoader, 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

      public MetadataReader getMetadataReader(Resource resource) throws IOException
      Description copied from interface: MetadataReaderFactory
      Obtain a MetadataReader for the given resource.
      Specified by:
      getMetadataReader in interface MetadataReaderFactory
      Overrides:
      getMetadataReader in class SimpleMetadataReaderFactory
      Parameters:
      resource - the resource (pointing to a ".class" file)
      Returns:
      a holder for the ClassReader instance (never null)
      Throws:
      ClassFormatException - in case of an incompatible class format
      IOException - in case of I/O failure
    • clearCache

      public void clearCache()
      Clear the local MetadataReader cache, if any, removing all cached class metadata.