## 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
`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, XML_FILE_EXTENSION`

Fields inherited from interface org.springframework.core.Ordered
`HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

Constructor Summary
`PropertySourcesPlaceholderConfigurer()`

Method Summary
`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`