org.springframework.cache.support

## 类 AbstractValueAdaptingCache

- java.lang.Object
- - org.springframework.cache.support.AbstractValueAdaptingCache

- 所有已实现的接口:
    Cache
  直接已知子类:
    ConcurrentMapCache

      public abstract class AbstractValueAdaptingCache
      extends Object
      implements Cache

  Common base class for `Cache` implementations that need to adapt `null` values (and potentially other such special values) before passing them on to the underlying store.

  Transparently replaces given `null` user values with an internal `NullValue.INSTANCE`, if configured to support `null` values (as indicated by `isAllowNullValues()`.

  从以下版本开始:
    4.2.2
  作者:
    Juergen Hoeller

- - ### 嵌套类概要

    - ### 从接口继承的嵌套类/接口 org.springframework.cache.Cache

      `Cache.ValueRetrievalException, Cache.ValueWrapper`

  - ### 构造器概要

    构造器
    限定符 | 构造器和说明
    --- | ---
    `protected` | `AbstractValueAdaptingCache(boolean allowNullValues)` Create an `AbstractValueAdaptingCache` with the given setting.

  - ### 方法概要

    所有方法 实例方法 抽象方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `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.
    `<T> T` | `get(Object key, Class<T> type)` Return the value to which this cache maps the specified key, generically specifying a type that return value will be cast to.
    `boolean` | `isAllowNullValues()` Return whether `null` values are allowed in this cache.
    `protected abstract Object` | `lookup(Object key)` Perform an actual lookup in the underlying store.
    `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`).
    `protected Cache.ValueWrapper` | `toValueWrapper(Object storeValue)` Wrap the given store value with a `SimpleValueWrapper`, also going through `fromStoreValue(java.lang.Object)` conversion.

    - ### 从类继承的方法 java.lang.Object

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

    - ### 从接口继承的方法 org.springframework.cache.Cache

      `clear, evict, get, getName, getNativeCache, put, putIfAbsent`

- - ### 构造器详细资料

    - #### AbstractValueAdaptingCache

          protected AbstractValueAdaptingCache(boolean allowNullValues)

      Create an `AbstractValueAdaptingCache` with the given setting.
      参数:
        `allowNullValues` - whether to allow for `null` values

  - ### 方法详细资料

    - #### isAllowNullValues

          public final boolean isAllowNullValues()

      Return whether `null` values are allowed in this cache.

    - #### get

          @Nullable
          public Cache.ValueWrapper get(Object key)

      从接口复制的说明: `Cache`
      Return the value to which this cache maps the specified key.

      Returns `null` if the cache contains no mapping for this key; otherwise, the cached value (which may be `null` itself) will be returned in a `Cache.ValueWrapper`.

      指定者:
        `get` 在接口中 `Cache`
      参数:
        `key` - the key whose associated value is to be returned
      返回:
        the value to which this cache maps the specified key, contained within a `Cache.ValueWrapper` which may also hold a cached `null` value. A straight `null` being returned means that the cache contains no mapping for this key.
      另请参阅:
        `Cache.get(Object, Class)`

    - #### get

          @Nullable
          public <T> T get(Object key,
                                      @Nullable
                                      Class<T> type)

      从接口复制的说明: `Cache`
      Return the value to which this cache maps the specified key, generically specifying a type that return value will be cast to.

      Note: This variant of `get` does not allow for differentiating between a cached `null` value and no cache entry found at all. Use the standard `Cache.get(Object)` variant for that purpose instead.

      指定者:
        `get` 在接口中 `Cache`
      参数:
        `key` - the key whose associated value is to be returned
        `type` - the required type of the returned value (may be `null` to bypass a type check; in case of a `null` value found in the cache, the specified type is irrelevant)
      返回:
        the value to which this cache maps the specified key (which may be `null` itself), or also `null` if the cache contains no mapping for this key
      另请参阅:
        `Cache.get(Object)`

    - #### lookup

          @Nullable
          protected abstract Object lookup(Object key)

      Perform an actual lookup in the underlying store.
      参数:
        `key` - the key whose associated value is to be returned
      返回:
        the raw store value for the key, or `null` if none

    - #### fromStoreValue

          @Nullable
          protected Object fromStoreValue(@Nullable
                                                     Object storeValue)

      Convert the given value from the internal store to a user value returned from the get method (adapting `null`).
      参数:
        `storeValue` - the store value
      返回:
        the value to return to the user

    - #### toStoreValue

          protected Object toStoreValue(@Nullable
                                        Object userValue)

      Convert the given user value, as passed into the put method, to a value in the internal store (adapting `null`).
      参数:
        `userValue` - the given user value
      返回:
        the value to store

    - #### toValueWrapper

          @Nullable
          protected Cache.ValueWrapper toValueWrapper(@Nullable
                                                                 Object storeValue)

      Wrap the given store value with a `SimpleValueWrapper`, also going through `fromStoreValue(java.lang.Object)` conversion. Useful for `get(Object)` and `Cache.putIfAbsent(Object, Object)` implementations.
      参数:
        `storeValue` - the original value
      返回:
        the wrapped value