org.springframework.core.env

## 类 PropertySource<T>

- java.lang.Object
- - org.springframework.core.env.PropertySource<T>

- 直接已知子类:
    EnumerablePropertySource, PropertySource.StubPropertySource

      public abstract class PropertySource<T>
      extends Object

  Abstract base class representing a source of name/value property pairs. The underlying source object may be of any type `T` that encapsulates properties. Examples include `Properties` objects, `Map` objects, `ServletContext` and `ServletConfig` objects (for access to init parameters). Explore the `PropertySource` type hierarchy to see provided implementations.

  `PropertySource` objects are not typically used in isolation, but rather through a `PropertySources` object, which aggregates property sources and in conjunction with a `PropertyResolver` implementation that can perform precedence-based searches across the set of `PropertySources`.

  `PropertySource` identity is determined not based on the content of encapsulated properties, but rather based on the `name` of the `PropertySource` alone. This is useful for manipulating `PropertySource` objects when in collection contexts. See operations in `MutablePropertySources` as well as the `named(String)` and `toString()` methods for details.

  Note that when working with @`Configuration` classes that the @`PropertySource` annotation provides a convenient and declarative way of adding property sources to the enclosing `Environment`.

  从以下版本开始:
    3.1
  作者:
    Chris Beams
  另请参阅:
    `PropertySources`, `PropertyResolver`, `PropertySourcesPropertyResolver`, `MutablePropertySources`, `org.springframework.context.annotation.PropertySource`

- - ### 嵌套类概要

    嵌套类
    限定符和类型 | 类和说明
    --- | ---
    `static class` | `PropertySource.StubPropertySource` `PropertySource` to be used as a placeholder in cases where an actual property source cannot be eagerly initialized at application context creation time.

  - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `protected Log` | `logger`
    `protected String` | `name`
    `protected T` | `source`

  - ### 构造器概要

    构造器
    构造器和说明
    `PropertySource(String name)` Create a new `PropertySource` with the given name and with a new `Object` instance as the underlying source.
    `PropertySource(String name, T source)` Create a new `PropertySource` with the given name and source object.

  - ### 方法概要

    所有方法 静态方法 实例方法 抽象方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `boolean` | `containsProperty(String name)` Return whether this `PropertySource` contains the given name.
    `boolean` | `equals(Object other)` This `PropertySource` object is equal to the given object if: they are the same instance the `name` properties for both objects are equal No properties other than `name` are evaluated.
    `String` | `getName()` Return the name of this `PropertySource`
    `abstract Object` | `getProperty(String name)` Return the value associated with the given name, or `null` if not found.
    `T` | `getSource()` Return the underlying source object for this `PropertySource`.
    `int` | `hashCode()` Return a hash code derived from the `name` property of this `PropertySource` object.
    `static PropertySource<?>` | `named(String name)` Return a `PropertySource` implementation intended for collection comparison purposes only.
    `String` | `toString()` Produce concise output (type and name) if the current log level does not include debug.

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

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

- - ### 字段详细资料

    - #### logger

          protected final Log logger

    - #### name

          protected final String name

    - #### source

          protected final T source

  - ### 构造器详细资料

    - #### PropertySource

          public PropertySource(String name,
                                T source)

      Create a new `PropertySource` with the given name and source object.

    - #### PropertySource

          public PropertySource(String name)

      Create a new `PropertySource` with the given name and with a new `Object` instance as the underlying source.

      Often useful in testing scenarios when creating anonymous implementations that never query an actual source but rather return hard-coded values.

  - ### 方法详细资料

    - #### getName

          public String getName()

      Return the name of this `PropertySource`

    - #### getSource

          public T getSource()

      Return the underlying source object for this `PropertySource`.

    - #### containsProperty

          public boolean containsProperty(String name)

      Return whether this `PropertySource` contains the given name.

      This implementation simply checks for a `null` return value from `getProperty(String)`. Subclasses may wish to implement a more efficient algorithm if possible.

      参数:
        `name` - the property name to find

    - #### getProperty

          @Nullable
          public abstract Object getProperty(String name)

      Return the value associated with the given name, or `null` if not found.
      参数:
        `name` - the property to find
      另请参阅:
        `PropertyResolver.getRequiredProperty(String)`

    - #### equals

          public boolean equals(Object other)

      This `PropertySource` object is equal to the given object if:
      - they are the same instance
      - the `name` properties for both objects are equal

      No properties other than `name` are evaluated.

      覆盖:
        `equals` 在类中 `Object`

    - #### hashCode

          public int hashCode()

      Return a hash code derived from the `name` property of this `PropertySource` object.
      覆盖:
        `hashCode` 在类中 `Object`

    - #### toString

          public String toString()

      Produce concise output (type and name) if the current log level does not include debug. If debug is enabled, produce verbose output including the hash code of the PropertySource instance and every name/value property pair.

      This variable verbosity is useful as a property source such as system properties or environment variables may contain an arbitrary number of property pairs, potentially leading to difficult to read exception and log messages.

      覆盖:
        `toString` 在类中 `Object`
      另请参阅:
        `Log.isDebugEnabled()`

    - #### named

          public static PropertySource<?> named(String name)

      Return a `PropertySource` implementation intended for collection comparison purposes only.

      Primarily for internal use, but given a collection of `PropertySource` objects, may be used as follows:

           List<PropertySource<?>> sources = new ArrayList<PropertySource<?>>();
           sources.add(new MapPropertySource("sourceA", mapA));
           sources.add(new MapPropertySource("sourceB", mapB));
           assert sources.contains(PropertySource.named("sourceA"));
           assert sources.contains(PropertySource.named("sourceB"));
           assert !sources.contains(PropertySource.named("sourceC"));

      The returned `PropertySource` will throw `UnsupportedOperationException` if any methods other than `equals(Object)`, `hashCode()`, and `toString()` are called.
      参数:
        `name` - the name of the comparison `PropertySource` to be created and returned.