在将我的Spring应用程序部署到AppFog时,似乎没有检测到环境变量。
我在控制台中声明了环境变量:
我尝试在我的应用代码中引用这些内容,如下所示:
<context:property-placeholder
location="classpath:server.common.properties,
classpath:server.${concorde-env}.properties"/>
但是,这会产生错误:
引起:java.io.FileNotFoundException:类路径资源 无法打开[server。$ {concorde-env} .properties],因为它确实如此 不存在
此方法适用于其他(非AppFog)环境。
我通过调用
注销了这些属性 log.info("Properties: " + System.getProperties().toString());
并没有将这些属性显示为可用。
但是,如果我执行af env <<MY_APP_NAME>>
,则会将变量显示为存在:
+--------------------------+------------------+
| Variable | Value |
+--------------------------+------------------+
| concorde-env | test |
| spring.profiles.active | runtime,test |
+--------------------------+------------------+
在运行时将这些变量暴露给我的应用程序我缺少什么?
答案 0 :(得分:1)
尝试访问这样的值:System.getenv("concorde-env")
以查看是否可以在代码中访问环境var。
基于错误消息"class path resource [server.${concorde-env}.properties] cannot be opened because it does not exist"
,即使使用空字符串,${concorde-env}
似乎也未被评估或替换。
看起来Spring有其他方法可以访问env vars。请尝试使用#{systemEnvironment['concorde-env']}
代替${concorde-env}