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

例如,这样的事情:

logging.level.com.acme=#{'${MY_RUN_ENV}'=='PROD'?'WARN':'DEBUG'}

也就是说,具体而言,行不通的。 但是,我想知道我是否可以做一些类似于那里的意图

#1楼 票数:16 已采纳

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

最后,虽然您可以在 @Value 中编写 SpEL 表达式,但不会从应用程序属性文件中处理此类表达式。

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

app.name=MyApp
app.description=${app.name} is a Spring Boot application

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

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

#2楼 票数:2

不,这是不可能的, 来自 spring boot 参考

功能@ConfigurationProperties

SpEL 评估 否

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

loglevel=DEBUG
logging.level.com.acme=${loglevel}

特定于配置文件的属性文件(默认为 -default)应该覆盖application.properties的属性,更多信息请点击此处

#3楼 票数:1

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

在 application-dev.properties 中:logging.level.com.acme=WARN

在 application-prod.properties 中:logging.level.com.acme=DEBUG

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

  ask by Darius X. translate from so

未解决问题?本站智能推荐:

1回复

Spring Boot 应用程序不使用 Application.Properties 文件

我是 Spring Boot 的新手,开始探索 Spring Boot。 根据我阅读的课程和文档,Spring Boot 将自动获取 application.properties。 我的 Application.properties 中有以下值 但是,在 JBOSS 中部署时,服务器端口是从 s
3回复

在Spring Boot中使用带有CamelSpringTestSupport的测试application.properties文件

先决条件 Apache Tomcat 7 Spring 4.1.5.RELEASE Spring Boot 1.2.2.RELEASE Apache Camel 2.15.1 问题 我使用Spring Boot和EndpointSetup也使用的配
1回复

使用application.properties文件激活配置文件以进行弹簧启动测试

我一直在将Spring Boot和TestNG用于我的测试框架,到目前为止,我的测试已配置为仅使用一个默认的application.properties文件,该文件位于src / main / resource下。 现在,我想针对不同的环境(ci / stage等)配置它们。我已经使用spri
7回复

Spring Boot 无法识别 application.properties 文件

我正在尝试使用 Spring Boot 配置 DynamoDb 客户端,并将我的端点和配置信息放在我的 resources/application.properties 文件中。 但是,Spring Boot 似乎并没有选择这些属性。 它确实选择了我存储在同一个文件中的“server.default
2回复

使用application.properties在Spring中配置枚举

我有以下枚举: 我想使用application.properties文件为枚举的两个实例设置不同的someNumber变量。 这是可能的,如果没有,我应该使用抽象类/接口将它分成两个类来进行抽象吗?
1回复

如何使用Application.properties文件在Spring Boot Application中设置多视图解析器

如何使用application.properties文件在Spring Boot MVC应用程序中设置多视图解析器? 我知道如何使用XML配置在Spring MVC应用程序中设置多视图解析器。 但是要知道在使用Spring Boot时可以进行设置,并且配置存储在application.p
3回复

在 Spring Boot 中的 application.properties 中使用 Maven 属性

我正在尝试将 pom.xml 中的属性加载到 application.properties 中。 我想创建两个配置文件:dev 和 prod 以使用不同的数据库 url。 我使用 Jenkins 作为 CI,在我的所有应用程序中(主要是 Spring MVC,没有 Boot 项目)都使用 maven
7回复

使用 Maven 测试时,Spring Boot 应用程序不读取 application.properties 文件

更新: 我现在意识到了一些事情。 我的 application.properties 文件正在正确加载,因为我通过 /env 路径(感谢 Dave)验证了我的数据库属性正在加载。 问题似乎是当我使用 Spring Boot maven 插件运行它时,它无法初始化我的数据源。 mvn spring