org.springframework.context.support

## Class PropertySourcesPlaceholderConfigurer

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

- All Implemented Interfaces:
    Aware, BeanFactoryAware, BeanNameAware, BeanFactoryPostProcessor, EnvironmentAware, Ordered, PriorityOrdered

      public class PropertySourcesPlaceholderConfigurer
      extends PlaceholderConfigurerSupport
      implements EnvironmentAware

  Specialization of `PlaceholderConfigurerSupport` that resolves ${...} placeholders within bean definition property values and `@Value` annotations against the current Spring `Environment` and its set of `PropertySources`.

  This class is designed as a general replacement for `PropertyPlaceholderConfigurer` in Spring 3.1 applications. It is used by default to support the `property-placeholder` element in working against the spring-context-3.1 XSD, whereas spring-context versions <= 3.0 default to `PropertyPlaceholderConfigurer` to ensure backward compatibility. See spring-context XSD documentation for complete details.

  Any local properties (e.g. those added via `PropertiesLoaderSupport.setProperties(java.util.Properties)`, `PropertiesLoaderSupport.setLocations(org.springframework.core.io.Resource[])` et al.) are added as a `PropertySource`. Search precedence of local properties is based on the value of the `localOverride` property, which is by default `false` meaning that local properties are to be searched last, after all environment property sources.

  See `ConfigurableEnvironment` and related Javadoc for details on manipulating environment property sources.

  Since:
    3.1
  Author:
    Chris Beams
  See Also:
    `ConfigurableEnvironment`, `PlaceholderConfigurerSupport`, `PropertyPlaceholderConfigurer`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME` "environmentProperties" is the name given to the `PropertySource` that wraps the environment supplied to this configurer.
    `static String` | `LOCAL_PROPERTIES_PROPERTY_SOURCE_NAME` "localProperties" is the name given to the `PropertySource` for the set of merged properties supplied to this configurer.

    - ### Fields inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport

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

    - ### Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport

      `localOverride, localProperties, logger`

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PropertySourcesPlaceholderConfigurer()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `PropertySources` | `getAppliedPropertySources()` Returns the property sources that were actually applied during `post-processing`.
    `void` | `postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)` Merge, convert and process properties against the given bean factory.
    `protected void` | `processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, ConfigurablePropertyResolver propertyResolver)` Visit each bean definition in the given bean factory and attempt to replace ${...} property placeholders with values from the given properties.
    `protected void` | `processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)` Deprecated. in favor of `processProperties(ConfigurableListableBeanFactory, ConfigurablePropertyResolver)`
    `void` | `setEnvironment(Environment environment)` Set the `Environment` that this object runs in.
    `void` | `setPropertySources(PropertySources propertySources)` Customize the set of `PropertySources` to be used by this configurer.

    - ### Methods inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport

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

    - ### Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer

      `convertProperties, convertProperty, convertPropertyValue, getOrder, setOrder`

    - ### Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport

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

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### LOCAL_PROPERTIES_PROPERTY_SOURCE_NAME

          public static final String LOCAL_PROPERTIES_PROPERTY_SOURCE_NAME

      "localProperties" is the name given to the `PropertySource` for the set of merged properties supplied to this configurer.
      See Also:
        Constant Field Values

    - #### ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME

          public static final String ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME

      "environmentProperties" is the name given to the `PropertySource` that wraps the environment supplied to this configurer.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### PropertySourcesPlaceholderConfigurer

          public PropertySourcesPlaceholderConfigurer()

  - ### Method Detail

    - #### setPropertySources

          public void setPropertySources(PropertySources propertySources)

      Customize the set of `PropertySources` to be used by this configurer. Setting this property indicates that environment property sources and local properties should be ignored.
      See Also:
        `postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)`

    - #### setEnvironment

          public void setEnvironment(Environment environment)

      Set the `Environment` that this object runs in.

      `PropertySources` from this environment will be searched when replacing ${...} placeholders.

      Specified by:
        `setEnvironment` in interface `EnvironmentAware`
      See Also:
        `setPropertySources(org.springframework.core.env.PropertySources)`, `postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)`

    - #### postProcessBeanFactory

          public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
                                      throws BeansException

      Merge, convert and process properties against the given bean factory.

      Processing occurs by replacing ${...} placeholders in bean definitions by resolving each against this configurer's set of `PropertySources`, which includes:

      - all environment property sources, if an `Environment` is present
      - merged local properties, if any have been specified
      - any property sources set by calling `setPropertySources(org.springframework.core.env.PropertySources)`

      If `setPropertySources(org.springframework.core.env.PropertySources)` is called, environment and local properties will be ignored. This method is designed to give the user fine-grained control over property sources, and once set, the configurer makes no assumptions about adding additional sources.

      Specified by:
        `postProcessBeanFactory` in interface `BeanFactoryPostProcessor`
      Overrides:
        `postProcessBeanFactory` in class `PropertyResourceConfigurer`
      Parameters:
        `beanFactory` - the bean factory used by the application context
      Throws:
        `BeansException` - in case of errors

    - #### processProperties

          protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess,
                                           ConfigurablePropertyResolver propertyResolver)
                                    throws BeansException

      Visit each bean definition in the given bean factory and attempt to replace ${...} property placeholders with values from the given properties.
      Throws:
        `BeansException`

    - #### processProperties

          @Deprecated
          protected void processProperties(ConfigurableListableBeanFactory beanFactory,
                                                       Properties props)

      Deprecated. in favor of `processProperties(ConfigurableListableBeanFactory, ConfigurablePropertyResolver)`
      Implemented for compatibility with `PlaceholderConfigurerSupport`.
      Specified by:
        `processProperties` in class `PropertyResourceConfigurer`
      Parameters:
        `beanFactory` - the BeanFactory used by the application context
        `props` - the Properties to apply
      Throws:
        `UnsupportedOperationException`

    - #### getAppliedPropertySources

          public PropertySources getAppliedPropertySources()
                                                    throws IllegalStateException

      Returns the property sources that were actually applied during `post-processing`.
      Returns:
        the property sources that were applied
      Throws:
        `IllegalStateException` - if the property sources have not yet been applied
      Since:
        4.0