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

Methods
`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`