0

似乎在将我的 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());

而且它没有显示这些属性是可用的。

但是,如果我执行 a af env <<MY_APP_NAME>>,它会显示存在的变量:

+--------------------------+------------------+
| Variable                 | Value            |
+--------------------------+------------------+
| concorde-env             | test             |
| spring.profiles.active   | runtime,test     |
+--------------------------+------------------+

在运行时让这些变量暴露给我的应用程序我缺少什么?

4

1 回答 1

1

尝试像这样访问值:System.getenv("concorde-env")查看环境变量是否甚至可以在代码中访问。

根据错误消息"class path resource [server.${concorde-env}.properties] cannot be opened because it does not exist",似乎${concorde-env}甚至没有被评估或替换为空字符串。

看起来 Spring 有其他访问环境变量的方法。尝试#{systemEnvironment['concorde-env']}代替${concorde-env}

于 2012-11-19T08:21:55.933 回答