可以将表达式用作Spring application.properties文件中的右侧值吗?
例如,像这样:
logging.level.com.acme=#{'${MY_RUN_ENV}'=='PROD'?'WARN':'DEBUG'}
具体而言,不工作。但是,我想知道我是否可以做类似于那里的事情
答案 0 :(得分:4)
不,您不能在属性文件中使用SpEL。
但您可以在属性文件中use placeholders,例如:
app.name=MyApp
app.description=${app.name} is a Spring Boot application
对于您的用例,您应该查看profile-specific configuration机制。
允许您根据环境配置文件加载不同的配置。
答案 1 :(得分:1)
不可以,From spring boot reference:
功能@ConfigurationProperties
SpEL评估否
相反,您可以在制作中使用application-default.properties
,并在其中定义loglevel=WARN
。
在您的application.properties
:
loglevel=DEBUG
logging.level.com.acme=${loglevel}
特定于配置文件的属性文件(默认情况下为-default)应覆盖application.properties
的属性,更多信息here。
答案 2 :(得分:1)
使用基于配置文件的属性文件。
在application-dev.properties中: logging.level.com.acme = WARN 强>
并在application-prod.properties中: logging.level.com.acme = DEBUG 强>
仅当春季启动在基于配置文件的文件中找不到属性时,它使用默认值中的值。因此,您可以在application.properties中设置属性,并在其值更改时在基于配置文件的文件中覆盖它们。