Can expressions be used as a right-hand-side value in a Spring application.properties file?
For example, something like this:
logging.level.com.acme=
No you can not use SpEL within properties files.
Finally, while you can write a SpEL expression in @Value, such expressions are not processed from Application property files.
You can however use placeholders within properties files, eg:
app.name=MyApp
app.description=${app.name} is a Spring Boot application
For your use case, you should look at the profile-specific configuration mechanism.
Which allows you to load different config based on an environment profile.
No this is not possible, From spring boot reference:
Feature @ConfigurationProperties
SpEL evaluation No
Instead you can have an application-default.properties
in production and in it define loglevel=WARN
.
And in your application.properties
:
loglevel=DEBUG
logging.level.com.acme=${loglevel}
The profile-specific properties file(-default by default) should override the properties from application.properties
, more info here.
Use profile based properties file.
In application-dev.properties : logging.level.com.acme=WARN
and in application-prod.properties : logging.level.com.acme=DEBUG
FYI when spring boot doesn't find a propertie in a profile based file it use the value in the default one . So you can set properties in application.properties and override them in a profile based file when their value changed.