org.springframework.ui

## 类 ConcurrentModel

- java.lang.Object
- - java.util.AbstractMap<K,V>
  - - java.util.concurrent.ConcurrentHashMap<String,Object>
    - - org.springframework.ui.ConcurrentModel

- 所有已实现的接口:
    Serializable, ConcurrentMap<String,Object>, Map<String,Object>, Model
  直接已知子类:
    BindingAwareConcurrentModel

      public class ConcurrentModel
      extends ConcurrentHashMap<String,Object>
      implements Model

  Implementation of the `Model` interface based on a `ConcurrentHashMap` for use in concurrent scenarios.

  Exposed to handler methods by Spring WebFlux, typically via a declaration of the `Model` interface. There is typically no need to create it within user code. If necessary a handler method can return a regular `java.util.Map`, likely a `java.util.ConcurrentMap`, for a pre-determined model.

  从以下版本开始:
    5.0
  作者:
    Rossen Stoyanchev
  另请参阅:
    序列化表格

- - ### 嵌套类概要

    - ### 从类继承的嵌套类/接口 java.util.concurrent.ConcurrentHashMap

      `ConcurrentHashMap.KeySetView<K,V>`

    - ### 从类继承的嵌套类/接口 java.util.AbstractMap

      `AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>`

    - ### 从接口继承的嵌套类/接口 java.util.Map

      `Map.Entry<K,V>`

  - ### 构造器概要

    构造器
    构造器和说明
    `ConcurrentModel()` Construct a new, empty `ConcurrentModel`.
    `ConcurrentModel(Object attributeValue)` Construct a new `ModelMap` containing the supplied attribute.
    `ConcurrentModel(String attributeName, Object attributeValue)` Construct a new `ModelMap` containing the supplied attribute under the supplied name.

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `ConcurrentModel` | `addAllAttributes(Collection<?> attributeValues)` Copy all attributes in the supplied `Collection` into this `Map`, using attribute name generation for each element.
    `ConcurrentModel` | `addAllAttributes(Map<String,?> attributes)` Copy all attributes in the supplied `Map` into this `Map`.
    `ConcurrentModel` | `addAttribute(Object attributeValue)` Add the supplied attribute to this `Map` using a `generated name`.
    `ConcurrentModel` | `addAttribute(String attributeName, Object attributeValue)` Add the supplied attribute under the supplied name.
    `Map<String,Object>` | `asMap()` Return the current set of model attributes as a Map.
    `boolean` | `containsAttribute(String attributeName)` Does this model contain an attribute of the given name?
    `ConcurrentModel` | `mergeAttributes(Map<String,?> attributes)` Copy all attributes in the supplied `Map` into this `Map`, with existing objects of the same name taking precedence (i.e. not getting replaced).
    `Object` | `put(String key, Object value)`
    `void` | `putAll(Map<? extends String,?> map)`

    - ### 从类继承的方法 java.util.concurrent.ConcurrentHashMap

      `clear, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, forEach, forEach, forEachEntry, forEachEntry, forEachKey, forEachKey, forEachValue, forEachValue, get, getOrDefault, hashCode, isEmpty, keys, keySet, keySet, mappingCount, merge, newKeySet, newKeySet, putIfAbsent, reduce, reduceEntries, reduceEntries, reduceEntriesToDouble, reduceEntriesToInt, reduceEntriesToLong, reduceKeys, reduceKeys, reduceKeysToDouble, reduceKeysToInt, reduceKeysToLong, reduceToDouble, reduceToInt, reduceToLong, reduceValues, reduceValues, reduceValuesToDouble, reduceValuesToInt, reduceValuesToLong, remove, remove, replace, replace, replaceAll, search, searchEntries, searchKeys, searchValues, size, toString, values`

    - ### 从类继承的方法 java.util.AbstractMap

      `clone`

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

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

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

    - #### ConcurrentModel

          public ConcurrentModel()

      Construct a new, empty `ConcurrentModel`.

    - #### ConcurrentModel

          public ConcurrentModel(String attributeName,
                                 Object attributeValue)

      Construct a new `ModelMap` containing the supplied attribute under the supplied name.
      另请参阅:
        `addAttribute(String, Object)`

    - #### ConcurrentModel

          public ConcurrentModel(Object attributeValue)

      Construct a new `ModelMap` containing the supplied attribute. Uses attribute name generation to generate the key for the supplied model object.
      另请参阅:
        `addAttribute(Object)`

  - ### 方法详细资料

    - #### put

          public Object put(String key,
                            Object value)

      指定者:
        `put` 在接口中 `Map<String,Object>`
      覆盖:
        `put` 在类中 `ConcurrentHashMap<String,Object>`

    - #### putAll

          public void putAll(Map<? extends String,?> map)

      指定者:
        `putAll` 在接口中 `Map<String,Object>`
      覆盖:
        `putAll` 在类中 `ConcurrentHashMap<String,Object>`

    - #### addAttribute

          public ConcurrentModel addAttribute(String attributeName,
                                              @Nullable
                                              Object attributeValue)

      Add the supplied attribute under the supplied name.
      指定者:
        `addAttribute` 在接口中 `Model`
      参数:
        `attributeName` - the name of the model attribute (never `null`)
        `attributeValue` - the model attribute value (ignored if `null`, just removing an existing entry if any)

    - #### addAttribute

          public ConcurrentModel addAttribute(Object attributeValue)

      Add the supplied attribute to this `Map` using a `generated name`.

      Note: Empty `Collections` are not added to the model when using this method because we cannot correctly determine the true convention name. View code should check for `null` rather than for empty collections as is already done by JSTL tags.

      指定者:
        `addAttribute` 在接口中 `Model`
      参数:
        `attributeValue` - the model attribute value (never `null`)

    - #### addAllAttributes

          public ConcurrentModel addAllAttributes(@Nullable
                                                  Collection<?> attributeValues)

      Copy all attributes in the supplied `Collection` into this `Map`, using attribute name generation for each element.
      指定者:
        `addAllAttributes` 在接口中 `Model`
      另请参阅:
        `addAttribute(Object)`

    - #### addAllAttributes

          public ConcurrentModel addAllAttributes(@Nullable
                                                  Map<String,?> attributes)

      Copy all attributes in the supplied `Map` into this `Map`.
      指定者:
        `addAllAttributes` 在接口中 `Model`
      另请参阅:
        `addAttribute(String, Object)`

    - #### mergeAttributes

          public ConcurrentModel mergeAttributes(@Nullable
                                                 Map<String,?> attributes)

      Copy all attributes in the supplied `Map` into this `Map`, with existing objects of the same name taking precedence (i.e. not getting replaced).
      指定者:
        `mergeAttributes` 在接口中 `Model`

    - #### containsAttribute

          public boolean containsAttribute(String attributeName)

      Does this model contain an attribute of the given name?
      指定者:
        `containsAttribute` 在接口中 `Model`
      参数:
        `attributeName` - the name of the model attribute (never `null`)
      返回:
        whether this model contains a corresponding attribute

    - #### asMap

          public Map<String,Object> asMap()

      从接口复制的说明: `Model`
      Return the current set of model attributes as a Map.
      指定者:
        `asMap` 在接口中 `Model`