org.springframework.beans.factory.config

## 类 PropertyPlaceholderConfigurer

- java.lang.Object
- - org.springframework.core.io.support.PropertiesLoaderSupport
  - - org.springframework.beans.factory.config.PropertyResourceConfigurer
    - - org.springframework.beans.factory.config.PlaceholderConfigurerSupport
      - - org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

- 所有已实现的接口:
    Aware, BeanFactoryAware, BeanNameAware, BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
  直接已知子类:
    PreferencesPlaceholderConfigurer

      public class PropertyPlaceholderConfigurer
      extends PlaceholderConfigurerSupport

  `PlaceholderConfigurerSupport` subclass that resolves ${...} placeholders against `local` `properties` and/or system properties and environment variables.

  As of Spring 3.1, `PropertySourcesPlaceholderConfigurer` should be used preferentially over this implementation; it is more flexible through taking advantage of the `Environment` and `PropertySource` mechanisms also made available in Spring 3.1.

  `PropertyPlaceholderConfigurer` is still appropriate for use when:

  - the `spring-context` module is not available (i.e., one is using Spring's `BeanFactory` API as opposed to `ApplicationContext`).
  - existing configuration makes use of the `"systemPropertiesMode"` and/or `"systemPropertiesModeName"` properties. Users are encouraged to move away from using these settings, and rather configure property source search order through the container's `Environment`; however, exact preservation of functionality may be maintained by continuing to use `PropertyPlaceholderConfigurer`.
  从以下版本开始:
    02.10.2003
  作者:
    Juergen Hoeller, Chris Beams
  另请参阅:
    `setSystemPropertiesModeName(java.lang.String)`, `PlaceholderConfigurerSupport`, `PropertyOverrideConfigurer`, `org.springframework.context.support.PropertySourcesPlaceholderConfigurer`

- - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `static int` | `SYSTEM_PROPERTIES_MODE_FALLBACK` Check system properties if not resolvable in the specified properties.
    `static int` | `SYSTEM_PROPERTIES_MODE_NEVER` Never check system properties.
    `static int` | `SYSTEM_PROPERTIES_MODE_OVERRIDE` Check system properties first, before trying the specified properties.

    - ### 从类继承的字段 org.springframework.beans.factory.config.PlaceholderConfigurerSupport

      `DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, ignoreUnresolvablePlaceholders, nullValue, placeholderPrefix, placeholderSuffix, trimValues, valueSeparator`

    - ### 从类继承的字段 org.springframework.core.io.support.PropertiesLoaderSupport

      `localOverride, localProperties, logger`

    - ### 从接口继承的字段 org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### 构造器概要

    构造器
    构造器和说明
    `PropertyPlaceholderConfigurer()`

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected void` | `processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props)` Visit each bean definition in the given bean factory and attempt to replace ${...} property placeholders with values from the given properties.
    `protected String` | `resolvePlaceholder(String placeholder, Properties props)` Resolve the given placeholder using the given properties.
    `protected String` | `resolvePlaceholder(String placeholder, Properties props, int systemPropertiesMode)` Resolve the given placeholder using the given properties, performing a system properties check according to the given mode.
    `protected String` | `resolveSystemProperty(String key)` Resolve the given key as JVM system property, and optionally also as system environment variable if no matching system property has been found.
    `void` | `setSearchSystemEnvironment(boolean searchSystemEnvironment)` Set whether to search for a matching system environment variable if no matching system property has been found.
    `void` | `setSystemPropertiesMode(int systemPropertiesMode)` Set how to check system properties: as fallback, as override, or never.
    `void` | `setSystemPropertiesModeName(String constantName)` Set the system property mode by the name of the corresponding constant, e.g.

    - ### 从类继承的方法 org.springframework.beans.factory.config.PlaceholderConfigurerSupport

      `doProcessProperties, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setTrimValues, setValueSeparator`

    - ### 从类继承的方法 org.springframework.beans.factory.config.PropertyResourceConfigurer

      `convertProperties, convertProperty, convertPropertyValue, getOrder, postProcessBeanFactory, setOrder`

    - ### 从类继承的方法 org.springframework.core.io.support.PropertiesLoaderSupport

      `loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister`

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

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

- - ### 字段详细资料

    - #### SYSTEM_PROPERTIES_MODE_NEVER

          public static final int SYSTEM_PROPERTIES_MODE_NEVER

      Never check system properties.
      另请参阅:
        常量字段值

    - #### SYSTEM_PROPERTIES_MODE_FALLBACK

          public static final int SYSTEM_PROPERTIES_MODE_FALLBACK

      Check system properties if not resolvable in the specified properties. This is the default.
      另请参阅:
        常量字段值

    - #### SYSTEM_PROPERTIES_MODE_OVERRIDE

          public static final int SYSTEM_PROPERTIES_MODE_OVERRIDE

      Check system properties first, before trying the specified properties. This allows system properties to override any other property source.
      另请参阅:
        常量字段值

  - ### 构造器详细资料

    - #### PropertyPlaceholderConfigurer

          public PropertyPlaceholderConfigurer()

  - ### 方法详细资料

    - #### setSystemPropertiesModeName

          public void setSystemPropertiesModeName(String constantName)
                                           throws IllegalArgumentException

      Set the system property mode by the name of the corresponding constant, e.g. "SYSTEM_PROPERTIES_MODE_OVERRIDE".
      参数:
        `constantName` - name of the constant
      抛出:
        `IllegalArgumentException`
      另请参阅:
        `setSystemPropertiesMode(int)`

    - #### setSystemPropertiesMode

          public void setSystemPropertiesMode(int systemPropertiesMode)

      Set how to check system properties: as fallback, as override, or never. For example, will resolve ${user.dir} to the "user.dir" system property.

      The default is "fallback": If not being able to resolve a placeholder with the specified properties, a system property will be tried. "override" will check for a system property first, before trying the specified properties. "never" will not check system properties at all.

      另请参阅:
        `SYSTEM_PROPERTIES_MODE_NEVER`, `SYSTEM_PROPERTIES_MODE_FALLBACK`, `SYSTEM_PROPERTIES_MODE_OVERRIDE`, `setSystemPropertiesModeName(java.lang.String)`

    - #### setSearchSystemEnvironment

          public void setSearchSystemEnvironment(boolean searchSystemEnvironment)

      Set whether to search for a matching system environment variable if no matching system property has been found. Only applied when "systemPropertyMode" is active (i.e. "fallback" or "override"), right after checking JVM system properties.

      Default is "true". Switch this setting off to never resolve placeholders against system environment variables. Note that it is generally recommended to pass external values in as JVM system properties: This can easily be achieved in a startup script, even for existing environment variables.

      另请参阅:
        `setSystemPropertiesMode(int)`, `System.getProperty(String)`, `System.getenv(String)`

    - #### resolvePlaceholder

          @Nullable
          protected String resolvePlaceholder(String placeholder,
                                                         Properties props,
                                                         int systemPropertiesMode)

      Resolve the given placeholder using the given properties, performing a system properties check according to the given mode.

      The default implementation delegates to `resolvePlaceholder (placeholder, props)` before/after the system properties check.

      Subclasses can override this for custom resolution strategies, including customized points for the system properties check.

      参数:
        `placeholder` - the placeholder to resolve
        `props` - the merged properties of this configurer
        `systemPropertiesMode` - the system properties mode, according to the constants in this class
      返回:
        the resolved value, of null if none
      另请参阅:
        `setSystemPropertiesMode(int)`, `System.getProperty(java.lang.String)`, `resolvePlaceholder(String, java.util.Properties)`

    - #### resolvePlaceholder

          @Nullable
          protected String resolvePlaceholder(String placeholder,
                                                         Properties props)

      Resolve the given placeholder using the given properties. The default implementation simply checks for a corresponding property key.

      Subclasses can override this for customized placeholder-to-key mappings or custom resolution strategies, possibly just using the given properties as fallback.

      Note that system properties will still be checked before respectively after this method is invoked, according to the system properties mode.

      参数:
        `placeholder` - the placeholder to resolve
        `props` - the merged properties of this configurer
      返回:
        the resolved value, of `null` if none
      另请参阅:
        `setSystemPropertiesMode(int)`

    - #### resolveSystemProperty

          @Nullable
          protected String resolveSystemProperty(String key)

      Resolve the given key as JVM system property, and optionally also as system environment variable if no matching system property has been found.
      参数:
        `key` - the placeholder to resolve as system property key
      返回:
        the system property value, or `null` if not found
      另请参阅:
        `setSearchSystemEnvironment(boolean)`, `System.getProperty(String)`, `System.getenv(String)`

    - #### processProperties

          protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess,
                                           Properties props)
                                    throws BeansException

      Visit each bean definition in the given bean factory and attempt to replace ${...} property placeholders with values from the given properties.
      指定者:
        `processProperties` 在类中 `PropertyResourceConfigurer`
      参数:
        `beanFactoryToProcess` - the BeanFactory used by the application context
        `props` - the Properties to apply
      抛出:
        `BeansException` - in case of errors