0

我的应用程序使用 src/main/resources 目录中名为 keys 的子目录中的公共加密密钥。为了在本地访问它,我只需要将路径设置为src/main/resources/keys/<mykey>.gpg

由于 Cloudhub 上的结构不同,因此设置上述路径不起作用,我必须将其设置为${app.home}/keys/<mykey>.gpg. 这在我直接在 Cloudhub 中设置属性时有效,但是当我在属性文件中设置它时,我收到错误消息...

Could not resolve placeholder 'app.home' in string value 
"${app.home}/classes/keys/<mykey>.gpg"

当我在本地运行时,我也无法解析该属性。我的猜测是首先解析 application-${ENV}.properties 中的属性,然后设置 ${app.home} 属性,最后解析 Cloudhub 属性。

我的问题是,我该怎么做才能确保从属性文件中正确解析 ${app.home} ,或者是否有另一种方法可以在不使用它的情况下实现相同的目标?理想情况下,我们不希望每次在 Cloudhub 中重新部署应用程序时都必须设置公钥位置。

谢谢!

编辑:为了更清楚,这里是我在 application-DEV-properties 中设置属性的地方:cibc.public.key.location=${app.home}/classes/keys/<mykey>.gpg

4

1 回答 1

3

我认为这在某些情况下是 Mule 3 中的一个问题。您可以尝试ignore-unresolvable="true"在属性占位符上进行设置。它应该告诉 spring 移动到下一个查找位置。

<context:property-placeholder location="your.properties" ignore-unresolvable="true"/>

更新还尝试将属性分成两个条目:

cibc.public.key.location=classes/keys/<mykey>.gpg

然后在您的 Mule 配置中:

identityFile="${app.home}/${cibc.public.key.location}" 
于 2019-03-28T23:11:32.147 回答