## org.springframework.cache.concurrent
Class ConcurrentMapCache

    java.lang.Object
      org.springframework.cache.concurrent.ConcurrentMapCache

All Implemented Interfaces:
  Cache

    public class ConcurrentMapCache

extends Object
implements Cache

Simple `Cache` implementation based on the core JDK `java.util.concurrent` package.

Useful for testing or simple caching scenarios, typically in combination with `SimpleCacheManager` or dynamically through `ConcurrentMapCacheManager`.

Note: As `ConcurrentHashMap` (the default implementation used) does not allow for `null` values to be stored, this class will replace them with a predefined internal object. This behavior can be changed through the `ConcurrentMapCache(String, ConcurrentMap, boolean)` constructor.

Since:
  3.1
Author:
  Costin Leau, Juergen Hoeller

Nested Class Summary

Nested classes/interfaces inherited from interface org.springframework.cache.Cache
`Cache.ValueWrapper`

Constructor Summary
`ConcurrentMapCache(String name)` Create a new ConcurrentMapCache with the specified name.
`ConcurrentMapCache(String name, boolean allowNullValues)` Create a new ConcurrentMapCache with the specified name.
`ConcurrentMapCache(String name, ConcurrentMap<Object,Object> store, boolean allowNullValues)` Create a new ConcurrentMapCache with the specified name and the given internal ConcurrentMap to use.

Method Summary
`void` `clear()` Remove all mappings from the cache.
`void` `evict(Object key)` Evict the mapping for this key from this cache if it is present.
`protected Object` `fromStoreValue(Object storeValue)` Convert the given value from the internal store to a user value returned from the get method (adapting `null`).
`Cache.ValueWrapper` `get(Object key)` Return the value to which this cache maps the specified key.
`String` `getName()` Return the cache name.
`ConcurrentMap` `getNativeCache()` Return the the underlying native cache provider.
`boolean` `isAllowNullValues()`
`void` `put(Object key, Object value)` Associate the specified value with the specified key in this cache.
`protected Object` `toStoreValue(Object userValue)` Convert the given user value, as passed into the put method, to a value in the internal store (adapting `null`).

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ConcurrentMapCache

    public ConcurrentMapCache(String name)

  Create a new ConcurrentMapCache with the specified name.

  Parameters:
    `name` - the name of the cache

### ConcurrentMapCache

    public ConcurrentMapCache(String name,
                              boolean allowNullValues)

  Create a new ConcurrentMapCache with the specified name.

  Parameters:
    `name` - the name of the cache
    `allowNullValues` - whether to accept and convert null values for this cache

### ConcurrentMapCache

    public ConcurrentMapCache(String name,
                              ConcurrentMap<Object,Object> store,
                              boolean allowNullValues)

  Create a new ConcurrentMapCache with the specified name and the given internal ConcurrentMap to use.

  Parameters:
    `name` - the name of the cache
    `store` - the ConcurrentMap to use as an internal store
    `allowNullValues` - whether to allow `null` values (adapting them to an internal null holder value)

Method Detail

### getName

    public String getName()

  Description copied from interface: `Cache`
  Return the cache name.

  Specified by:
    `getName` in interface `Cache`

### getNativeCache

    public ConcurrentMap getNativeCache()

  Description copied from interface: `Cache`
  Return the the underlying native cache provider.

  Specified by:
    `getNativeCache` in interface `Cache`

### isAllowNullValues

    public boolean isAllowNullValues()

### get

    public Cache.ValueWrapper get(Object key)

  Description copied from interface: `Cache`
  Return the value to which this cache maps the specified key. Returns `null` if the cache contains no mapping for this key.

  Specified by:
    `get` in interface `Cache`
  Parameters:
    `key` - key whose associated value is to be returned.
  Returns:
    the value to which this cache maps the specified key, or `null` if the cache contains no mapping for this key

### put

    public void put(Object key,
                    Object value)

  Description copied from interface: `Cache`
  Associate the specified value with the specified key in this cache.

  If the cache previously contained a mapping for this key, the old value is replaced by the specified value.

  Specified by:
    `put` in interface `Cache`
  Parameters:
    `key` - the key with which the specified value is to be associated
    `value` - the value to be associated with the specified key

### evict

    public void evict(Object key)

  Description copied from interface: `Cache`
  Evict the mapping for this key from this cache if it is present.

  Specified by:
    `evict` in interface `Cache`
  Parameters:
    `key` - the key whose mapping is to be removed from the cache

### clear

    public void clear()

  Description copied from interface: `Cache`
  Remove all mappings from the cache.

  Specified by:
    `clear` in interface `Cache`

### fromStoreValue

    protected Object fromStoreValue(Object storeValue)

  Convert the given value from the internal store to a user value returned from the get method (adapting `null`).

  Parameters:
    `storeValue` - the store value
  Returns:
    the value to return to the user

### toStoreValue

    protected Object toStoreValue(Object userValue)

  Convert the given user value, as passed into the put method, to a value in the internal store (adapting `null`).

  Parameters:
    `userValue` - the given user value
  Returns:
    the value to store