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 (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.

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
    "environmentProperties" is the name given to the PropertySource that wraps the environment supplied to this configurer.
    static final String
    "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, 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
     
  • 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
    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)
    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)
    PropertySources from the given Environment will be searched when replacing ${...} placeholders.
    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, 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:
    • 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:
  • 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:
    • setEnvironment

      public void setEnvironment(org.springframework.core.env.Environment environment)
      PropertySources from the given Environment will be searched when replacing ${...} placeholders.
      Specified by:
      setEnvironment in interface EnvironmentAware
      See Also:
    • 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:

      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.
      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)
      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