Package 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:
  `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanFactoryAware`, `org.springframework.beans.factory.BeanNameAware`, `org.springframework.beans.factory.config.BeanFactoryPostProcessor`, `EnvironmentAware`, `org.springframework.core.Ordered`, `org.springframework.core.PriorityOrdered`

public class PropertySourcesPlaceholderConfigurer extends org.springframework.beans.factory.config.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`. It is used by default to support the `property-placeholder` element in working against the spring-context-3.1 or higher XSD; whereas, spring-context versions <= 3.0 default to `PropertyPlaceholderConfigurer` to ensure backward compatibility. See the spring-context XSD documentation for complete details.

Any local properties (for example, those added via `PropertiesLoaderSupport.setProperties(java.util.Properties)`, `PropertiesLoaderSupport.setLocations(org.springframework.core.io.Resource...)` et al.) are added as a single `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 javadocs for details on manipulating environment property sources.

Since:
  3.1
Author:
  Chris Beams, Juergen Hoeller, Sam Brannen
See Also:
  - `ConfigurableEnvironment`
  - `PlaceholderConfigurerSupport`
  - `PropertyPlaceholderConfigurer`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME`
"environmentProperties" is the name given to the `PropertySource` that wraps the environment supplied to this configurer.
`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.

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

`DEFAULT_ESCAPE_CHARACTER, DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, escapeCharacter, ignoreUnresolvablePlaceholders, nullValue, placeholderPrefix, placeholderSuffix, trimValues, 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
Description
`PropertySourcesPlaceholderConfigurer()`

## Method Summary

Modifier and Type
Method
Description
`protected org.springframework.core.env.ConfigurablePropertyResolver`
`createPropertyResolver(org.springframework.core.env.MutablePropertySources propertySources)`
Create a `ConfigurablePropertyResolver` for the specified property sources.
`org.springframework.core.env.PropertySources`
`getAppliedPropertySources()`
Return the property sources that were actually applied during `post-processing`.
`void`
`postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)`
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)`
`protected void`
`processProperties(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, Properties props)`
Deprecated.
in favor of `processProperties(ConfigurableListableBeanFactory, ConfigurablePropertyResolver)`
`protected void`
`processProperties(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactoryToProcess, org.springframework.core.env.ConfigurablePropertyResolver propertyResolver)`
Visit each bean definition in the given bean factory and attempt to replace ${...} property placeholders with values from the given properties.
`void`
`setEnvironment(org.springframework.core.env.Environment environment)`
Set the `Environment` that this component runs in.
`void`
`setPropertySources(org.springframework.core.env.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, setEscapeCharacter, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setTrimValues, 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 Details

### 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 Details

### PropertySourcesPlaceholderConfigurer

public PropertySourcesPlaceholderConfigurer()

## Method Details

### setPropertySources

public void setPropertySources(org.springframework.core.env.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(org.springframework.core.env.Environment environment)
Set the `Environment` that this component runs in.

`PropertySources` from the given `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(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) throws org.springframework.beans.BeansException
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 `org.springframework.beans.factory.config.BeanFactoryPostProcessor`
Overrides:
  `postProcessBeanFactory` in class `org.springframework.beans.factory.config.PropertyResourceConfigurer`
Throws:
  `org.springframework.beans.BeansException`

### createPropertyResolver

protected org.springframework.core.env.ConfigurablePropertyResolver createPropertyResolver(org.springframework.core.env.MutablePropertySources propertySources)
Create a `ConfigurablePropertyResolver` for the specified property sources.

The default implementation creates a `PropertySourcesPropertyResolver`.

Parameters:
  `propertySources` - the property sources to use
Since:
  6.0.12

### processProperties

protected void processProperties(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactoryToProcess, org.springframework.core.env.ConfigurablePropertyResolver propertyResolver) throws org.springframework.beans.BeansException
Visit each bean definition in the given bean factory and attempt to replace ${...} property placeholders with values from the given properties.

Throws:
  `org.springframework.beans.BeansException`

### processProperties

@Deprecated protected void processProperties(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, Properties props)
Deprecated.
in favor of `processProperties(ConfigurableListableBeanFactory, ConfigurablePropertyResolver)`
Implemented for compatibility with `PlaceholderConfigurerSupport`.

Specified by:
  `processProperties` in class `org.springframework.beans.factory.config.PropertyResourceConfigurer`
Throws:
  `UnsupportedOperationException` - in this implementation

### getAppliedPropertySources

public org.springframework.core.env.PropertySources getAppliedPropertySources() throws IllegalStateException
Return 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