拆分不适用于 AbstractEnvironment.getProperty

Split doesn't work with AbstractEnvironment.getProperty

我的 application.properties 文件中有以下 属性。

test.product.release.version=2003.1

test.product.release.year=#{'${test.product.release.version}'.split('[.]')[0]

当我在我的 spring 控制器中使用 属性 test.product.release.year 使用 @Value 注释时,它给我的值是 2003,但是当我得到它的值时通过 AbstractEnvironment#getProperty 我获得了

的价值

#{'${test.product.release.version}'.split('[.]')[0]

如何使用 AbstractEnvironment 获取值 2003?

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

Finally, while you can write a SpEL expression in @Value, such expressions are not processed from Application property files.

但是您可以 use placeholders 在属性文件中,例如:

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

对于您的用例,您应该查看 profile-specific configuration 机制。

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