Class PlaceholderConfigurerSupport
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,BeanNameAware
,BeanFactoryPostProcessor
,Ordered
,PriorityOrdered
- Direct Known Subclasses:
PropertyPlaceholderConfigurer
,PropertySourcesPlaceholderConfigurer
The default placeholder syntax follows the Ant / Log4J / JSP EL style:
${...}Example XML bean definition:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${driver}" /> <property name="url" value="jdbc:${dbname}" /> </bean>Example properties file:
driver=com.mysql.jdbc.Driver dbname=mysql:mydbAnnotated bean definitions may take advantage of property replacement using the
@Value
annotation:
@Value("${person.age}")Implementations check simple property values, lists, maps, props, and bean names in bean references. Furthermore, placeholder values can also cross-reference other placeholders, like:
rootPath=myrootdir subPath=${rootPath}/subdirIn contrast to
PropertyOverrideConfigurer
, subclasses of this type allow
filling in of explicit placeholders in bean definitions.
If a configurer cannot resolve a placeholder, a BeanDefinitionStoreException
will be thrown. If you want to check against multiple properties files, specify multiple
resources via the locations
property. You can also define multiple
configurers, each with its own placeholder syntax. Use ignoreUnresolvablePlaceholders
to intentionally suppress throwing an exception if a
placeholder cannot be resolved.
Default property values can be defined globally for each configurer instance
via the properties
property, or on a property-by-property basis
using the value separator which is ":"
by default and customizable via
setValueSeparator(String)
.
Example XML property with default value:
<property name="url" value="jdbc:${dbname:defaultdb}" />
- Since:
- 3.1
- Author:
- Chris Beams, Juergen Hoeller
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final Character
Default escape character:'\'
.static final String
Default placeholder prefix: "${".static final String
Default placeholder suffix: "}".static final String
Default value separator: ":".protected Character
Defaults toDEFAULT_ESCAPE_CHARACTER
.protected boolean
protected String
protected String
Defaults to "${".protected String
Defaults to "}".protected boolean
protected String
Defaults to ":".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
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
doProcessProperties
(ConfigurableListableBeanFactory beanFactoryToProcess, StringValueResolver valueResolver) void
setBeanFactory
(BeanFactory beanFactory) Only necessary to check that we're not parsing our own bean definition, to avoid failing on unresolvable placeholders in properties file locations.void
setBeanName
(String beanName) Only necessary to check that we're not parsing our own bean definition, to avoid failing on unresolvable placeholders in properties file locations.void
setEscapeCharacter
(Character escsEscapeCharacter) Specify the escape character to use to ignore placeholder prefix or value separator, ornull
if no escaping should take place.void
setIgnoreUnresolvablePlaceholders
(boolean ignoreUnresolvablePlaceholders) Set whether to ignore unresolvable placeholders.void
setNullValue
(String nullValue) Set a value that should be treated asnull
when resolved as a placeholder value: for example, "" (empty String) or "null".void
setPlaceholderPrefix
(String placeholderPrefix) Set the prefix that a placeholder string starts with.void
setPlaceholderSuffix
(String placeholderSuffix) Set the suffix that a placeholder string ends with.void
setTrimValues
(boolean trimValues) Specify whether to trim resolved values before applying them, removing superfluous whitespace from the beginning and end.void
setValueSeparator
(String valueSeparator) Specify the separating character between the placeholder variable and the associated default value, ornull
if no such special character should be processed as a value separator.Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, convertProperty, convertPropertyValue, getOrder, postProcessBeanFactory, processProperties, setOrder
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
-
Field Details
-
DEFAULT_PLACEHOLDER_PREFIX
Default placeholder prefix: "${".- See Also:
-
DEFAULT_PLACEHOLDER_SUFFIX
Default placeholder suffix: "}".- See Also:
-
DEFAULT_VALUE_SEPARATOR
Default value separator: ":".- See Also:
-
DEFAULT_ESCAPE_CHARACTER
Default escape character:'\'
. -
placeholderPrefix
Defaults to "${". -
placeholderSuffix
Defaults to "}". -
valueSeparator
Defaults to ":". -
escapeCharacter
Defaults toDEFAULT_ESCAPE_CHARACTER
. -
trimValues
protected boolean trimValues -
nullValue
-
ignoreUnresolvablePlaceholders
protected boolean ignoreUnresolvablePlaceholders
-
-
Constructor Details
-
PlaceholderConfigurerSupport
public PlaceholderConfigurerSupport()
-
-
Method Details
-
setPlaceholderPrefix
Set the prefix that a placeholder string starts with. The default is "${". -
setPlaceholderSuffix
Set the suffix that a placeholder string ends with. The default is "}". -
setValueSeparator
Specify the separating character between the placeholder variable and the associated default value, ornull
if no such special character should be processed as a value separator. The default is ":". -
setEscapeCharacter
Specify the escape character to use to ignore placeholder prefix or value separator, ornull
if no escaping should take place.Default is
DEFAULT_ESCAPE_CHARACTER
.- Since:
- 6.2
-
setTrimValues
public void setTrimValues(boolean trimValues) Specify whether to trim resolved values before applying them, removing superfluous whitespace from the beginning and end.Default is
false
.- Since:
- 4.3
-
setNullValue
Set a value that should be treated asnull
when resolved as a placeholder value: for example, "" (empty String) or "null".Note that this will only apply to full property values, not to parts of concatenated values.
By default, no such null value is defined. This means that there is no way to express
null
as a property value unless you explicitly map a corresponding value here. -
setIgnoreUnresolvablePlaceholders
public void setIgnoreUnresolvablePlaceholders(boolean ignoreUnresolvablePlaceholders) Set whether to ignore unresolvable placeholders.Default is "false": An exception will be thrown if a placeholder fails to resolve. Switch this flag to "true" in order to preserve the placeholder String as-is in such a case, leaving it up to other placeholder configurers to resolve it.
-
setBeanName
Only necessary to check that we're not parsing our own bean definition, to avoid failing on unresolvable placeholders in properties file locations. The latter case can happen with placeholders for system properties in resource locations.- Specified by:
setBeanName
in interfaceBeanNameAware
- Parameters:
beanName
- the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use theBeanFactoryUtils.originalBeanName(String)
method to extract the original bean name (without suffix), if desired.- See Also:
-
setBeanFactory
Only necessary to check that we're not parsing our own bean definition, to avoid failing on unresolvable placeholders in properties file locations. The latter case can happen with placeholders for system properties in resource locations.- Specified by:
setBeanFactory
in interfaceBeanFactoryAware
- Parameters:
beanFactory
- owning BeanFactory (nevernull
). The bean can immediately call methods on the factory.- See Also:
-
doProcessProperties
protected void doProcessProperties(ConfigurableListableBeanFactory beanFactoryToProcess, StringValueResolver valueResolver)
-