如何在 application.properties 中拆分 属性 的值

How to split value of property in application.properties

我想拆分 属性 定义的值 application.properties 并将其用作另一个 属性 的值。

以下是我在 application.properties 文件

中的属性
test.product.release.version=2003.1
test.product.release.year=${test.product.release.version}.split('.')[0]

我想要 属性 test.product.release.year 的值作为 2003

我尝试使用 ${test.product.release.version}.split('.')[0] 拆分,但是当我在我的控制器中获得 属性 时,我仍然获得 2003.1.split('.')[0]

的值

我怎样才能将其作为 2003 获取?

对于我的观点,你应该从不同的角度来看:

test.product.release.version.year=2003
test.product.release.version.sub=1
test.product.release.version=${test.product.release.version.year}.${test.product.release.version.sub}

使用下面的表达式。这会起作用。

@Value("#{\"${test.product.release.version}\".split(\"\.\")}")
private String[] myValues;

// this will give you year part.
@Value("#{\"${test.product.release.version}\".split(\"\.\")[0]}")
private String year;

控制器中可以直接获取年份

@Value("#{'${test.product.release.version}'.split('[.]')[0]}")
private String year;

同理版本

@Value("#{'${test.product.release.version}'.split('[.]')[1]}")
private String version;

以同样的方式,您也可以在属性文件中指定此表达式

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

然后用@Valuetest.product.release.year

@Value("${test.product.release.year}")
private String value;

由于您将有一个 属性 并从第一个派生另一个,最好按如下方式进行:

application.properties

test.product.release.version=2003.1

配置class

@Value("${test.product.release.version}")
private String version;
@Value("#{'${test.product.release.version}'.split('\.')[0]}")
private String year;