org.springframework.core.type.classreading

## 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 `MetadataReader` per Spring `Resource` handle (i.e. per ".class" file).
  Since:
    2.5
  Author:
    Juergen Hoeller, Costin Leau

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_CACHE_LIMIT` Default maximum number of entries for the MetadataReader cache: 256

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CachingMetadataReaderFactory()` Create a new CachingMetadataReaderFactory for the default class loader.
    `CachingMetadataReaderFactory(ClassLoader classLoader)` Create a new CachingMetadataReaderFactory for the given class loader.
    `CachingMetadataReaderFactory(ResourceLoader resourceLoader)` Create a new CachingMetadataReaderFactory for the given resource loader.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clearCache()` Clear the entire MetadataReader cache, 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.

    - ### Methods inherited from class org.springframework.core.type.classreading.SimpleMetadataReaderFactory

      `getMetadataReader, getResourceLoader`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_CACHE_LIMIT

          public static final int DEFAULT_CACHE_LIMIT

      Default maximum number of entries for the MetadataReader cache: 256
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### CachingMetadataReaderFactory

          public CachingMetadataReaderFactory()

      Create a new CachingMetadataReaderFactory for the default class loader.

    - #### CachingMetadataReaderFactory

          public CachingMetadataReaderFactory(ResourceLoader resourceLoader)

      Create a new CachingMetadataReaderFactory for the given resource loader.
      Parameters:
        `resourceLoader` - the Spring ResourceLoader to use (also determines the ClassLoader to use)

    - #### CachingMetadataReaderFactory

          public CachingMetadataReaderFactory(ClassLoader classLoader)

      Create a new CachingMetadataReaderFactory for the given class loader.
      Parameters:
        `classLoader` - the ClassLoader to use

  - ### Method Detail

    - #### setCacheLimit

          public void setCacheLimit(int cacheLimit)

      Specify the maximum number of entries for the MetadataReader cache. Default is 256.

    - #### 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:
        `IOException` - in case of I/O failure

    - #### clearCache

          public void clearCache()

      Clear the entire MetadataReader cache, removing all cached class metadata.