在CloudHub设置中起作用的属性在属性文件中不起作用

时间:2019-03-28 16:23:55

标签: java spring mule cloudhub

我的应用程序在子目录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

1 个答案:

答案 0 :(得分: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}"