Skip to content

Commit

Permalink
Document when to use multiple property placeholder configurers
Browse files Browse the repository at this point in the history
This commit adds a warning in the reference guide to address the
use cases where users might be tempted to use several property
placeholder configurers.

Closes gh-14623
  • Loading branch information
snicoll committed Oct 18, 2023
1 parent 875eeab commit 69c92f9
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
11 changes: 11 additions & 0 deletions framework-docs/modules/ROOT/pages/core/appendix/xsd-schemas.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,17 @@ is a convenience mechanism that sets up a xref:core/beans/factory-extension.adoc
for you. If you need more control over the specific
`PropertySourcesPlaceholderConfigurer` setup, you can explicitly define it as a bean yourself.

[WARNING]
=====
Only one such element should be defined for a given application with the properties
that it needs. Several property placeholders can be configured as long as they have distinct
placeholder syntax (`${...}`).
If you need to modularize the source of properties used for the replacement, you should
not create multiple properties placeholders. Rather, each module should contribute a
`PropertySource` to the `Environment`. Alternatively, you can create your own
`PropertySourcesPlaceholderConfigurer` bean that gathers the properties to use.
=====

[[xsd-schemas-context-ac]]
=== Using `<annotation-config/>`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,17 @@ The `PropertySourcesPlaceholderConfigurer` not only looks for properties in the
file you specify. By default, if it cannot find a property in the specified properties files,
it checks against Spring `Environment` properties and regular Java `System` properties.

[WARNING]
=====
Only one such element should be defined for a given application with the properties
that it needs. Several property placeholders can be configured as long as they have distinct
placeholder syntax (`${...}`).
If you need to modularize the source of properties used for the replacement, you should
not create multiple properties placeholders. Rather, you should create your own
`PropertySourcesPlaceholderConfigurer` bean that gathers the properties to use.
=====

[TIP]
=====
You can use the `PropertySourcesPlaceholderConfigurer` to substitute class names, which
Expand Down

0 comments on commit 69c92f9

Please sign in to comment.