Using Expressions in Spring application.properties file

前端 未结 3 2032
梦毁少年i
梦毁少年i 2020-12-06 18:32

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=         


        
相关标签:
3条回答
  • 2020-12-06 18:59

    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.

    0 讨论(0)
  • 2020-12-06 19:02

    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.

    0 讨论(0)
  • 2020-12-06 19:09

    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.

    0 讨论(0)
提交回复
热议问题