首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spring application.properties文件中使用表达式

在Spring application.properties文件中使用表达式
EN

Stack Overflow用户
提问于 2017-08-16 03:02:12
回答 3查看 19.9K关注 0票数 21

表达式可以用作Spring application.properties文件中的右侧值吗?

例如,如下所示:

代码语言:javascript
运行
复制
logging.level.com.acme=#{'${MY_RUN_ENV}'=='PROD'?'WARN':'DEBUG'}

具体来说,这是行不通的。但是,我想知道我是否能做一些类似的事情

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-16 03:47:00

不,不能在属性文件中使用SpEL。

最后,虽然可以用@Value编写SpEL表达式,但这些表达式不会从Application文件中处理。

不过,您可以在属性文件中使用使用占位符,例如:

代码语言:javascript
运行
复制
app.name=MyApp
app.description=${app.name} is a Spring Boot application

对于您的用例,您应该查看配置文件特定配置机制。

它允许您根据环境配置文件加载不同的配置。

票数 20
EN

Stack Overflow用户

发布于 2017-08-16 03:38:37

不,这不可能,从弹簧引导参考

Feature @ConfigurationProperties SpEL评价编号

相反,您可以在生产中使用application-default.properties,并在其中定义loglevel=WARN。在你的application.properties

代码语言:javascript
运行
复制
loglevel=DEBUG
logging.level.com.acme=${loglevel}

特定于配置文件的属性文件(默认情况下是-default)应该覆盖来自application.properties的属性,更多的信息这里

票数 3
EN

Stack Overflow用户

发布于 2017-08-16 10:01:00

使用基于配置文件的属性文件。

应用程序中的-dev.properties: logging.level.com.acme=WARN

及其应用程序-prod.properties: logging.level.com.acme=DEBUG

FYI当spring引导在基于配置文件的文件中找不到属性时,它使用默认值中的值。因此,您可以在application.properties中设置属性,并在它们的值更改时在基于配置文件的文件中覆盖它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45704466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档