【问题标题】:Property that works in CloudHub settings is not working in properties files在 CloudHub 设置中有效的属性在属性文件中无效
【发布时间】:2019-04-02 15:51:55
【问题描述】:

我的应用使用 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/&lt;mykey&gt;.gpg

【问题讨论】:

  • 你在用mule 3吗?还是 4 个?
  • @Ryan Carter 我们正在使用 Mule 3。
  • 更新答案。

标签: java spring mule cloudhub


【解决方案1】:

我认为这是 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}" 

【讨论】:

  • 我试过这个,但我得到一个运行时错误,“属性'ignore-unresolable'不允许出现在元素'context:property-placeholder'中。”
  • 你缺少 'v' : 'ignore-unresolable' -> 'ignore-unresolvable'
  • 哦...哎呀。谢谢!
  • 所以我修复了拼写问题,但是当我在 Cloudhub 中运行时,我遇到了同样的问题,即找不到属性 ${app.home}。会不会是因为我在属性中使用属性?
  • 我让它工作了!我基本上接受了您将属性分为两部分的建议。由于不再从属性文件访问 ${app.home} 属性,因此不再需要“ignore-unresolvable”。由于在本地运行不使用 ${app.home} 作为根路径,我必须做一些逻辑来检查环境并相应地使用 ${app.home} 或 src/main/resources。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2020-04-11
  • 2011-02-15
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
相关资源
最近更新 更多