public class PropertySourcesPlaceholderConfigurer extends PlaceholderConfigurerSupport implements EnvironmentAware
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
introduced in Spring 3.1. 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 (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 javadocs
for details on manipulating environment property sources.
ConfigurableEnvironment
,
PlaceholderConfigurerSupport
,
PropertyPlaceholderConfigurer
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME
"environmentProperties" is the name given to the
PropertySource that wraps the
environment supplied to this configurer. |
static java.lang.String |
LOCAL_PROPERTIES_PROPERTY_SOURCE_NAME
"localProperties" is the name given to the
PropertySource for the set of
merged properties supplied to this configurer. |
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, ignoreUnresolvablePlaceholders, nullValue, placeholderPrefix, placeholderSuffix, trimValues, valueSeparator
localOverride, localProperties, logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor and Description |
---|
PropertySourcesPlaceholderConfigurer() |
Modifier and Type | Method and Description |
---|---|
PropertySources |
getAppliedPropertySources()
Return the property sources that were actually applied during
post-processing . |
void |
postProcessBeanFactory(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(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,
java.util.Properties props)
Deprecated.
|
void |
setEnvironment(Environment environment)
PropertySources from the given Environment
will be searched when replacing ${...} placeholders. |
void |
setPropertySources(PropertySources propertySources)
Customize the set of
PropertySources to be used by this configurer. |
doProcessProperties, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setTrimValues, setValueSeparator
convertProperties, convertProperty, convertPropertyValue, getOrder, setOrder
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
public static final java.lang.String LOCAL_PROPERTIES_PROPERTY_SOURCE_NAME
PropertySource
for the set of
merged properties supplied to this configurer.public static final java.lang.String ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME
PropertySource
that wraps the
environment supplied to this configurer.public PropertySourcesPlaceholderConfigurer()
public void setPropertySources(PropertySources propertySources)
PropertySources
to be used by this configurer.
Setting this property indicates that environment property sources and local properties should be ignored.
public void setEnvironment(Environment environment)
PropertySources
from the given Environment
will be searched when replacing ${...} placeholders.public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
PropertySources
, which includes:
Environment
is present
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.
postProcessBeanFactory
in interface BeanFactoryPostProcessor
postProcessBeanFactory
in class PropertyResourceConfigurer
beanFactory
- the bean factory used by the application contextBeansException
- in case of errorsprotected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, ConfigurablePropertyResolver propertyResolver) throws BeansException
BeansException
@Deprecated protected void processProperties(ConfigurableListableBeanFactory beanFactory, java.util.Properties props)
processProperties(ConfigurableListableBeanFactory, ConfigurablePropertyResolver)
PlaceholderConfigurerSupport
.processProperties
in class PropertyResourceConfigurer
beanFactory
- the BeanFactory used by the application contextprops
- the Properties to applyjava.lang.UnsupportedOperationException
- in this implementationpublic PropertySources getAppliedPropertySources() throws java.lang.IllegalStateException
post-processing
.java.lang.IllegalStateException
- if the property sources have not yet been applied