Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Expressions in Spring application.properties file

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=#{'${MY_RUN_ENV}'=='PROD'?'WARN':'DEBUG'}

That, specifically, does not work. But, I'm wondering if I can do something similar to what's intended there

like image 582
Darius X. Avatar asked Aug 16 '17 03:08

Darius X.


2 Answers

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.

like image 87
Magnus Avatar answered Oct 15 '22 14:10

Magnus


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.

like image 37
Oleg Avatar answered Oct 15 '22 13:10

Oleg