Spring从我的系统环境变量中读取

时间:2013-11-20 03:39:34

标签: java spring tomcat

我想使用我的系统环境变量(即我在FOO .bash_profile中定义的变量export FOO=BAR)来获取Spring的applicationContext.xml中的值;

例如:

<bean id="dataSource" ...>
   <property name="jdbcUrl" value="${FOO}" />
...
</bean>

我在IntelliJ中使用Maven-tomcat-plugin和Tomcat来运行我的服务器。

现在,当我的webapp启动时,它无法找到系统变量。

我需要做些什么才能让Spring从我的系统环境变量中读取?

P.S。我已经检查了how to read System environment variable in Spring applicationContext,但似乎不适合我

2 个答案:

答案 0 :(得分:2)

系统环境变量与JVM系统属性不同 - spring PropertyPlaceholderConfigurer允许您访问。所以你需要添加到JVM命令:

java ... -DFOO=${FOO}

(其中-DFOO将“FOO”定义为JVM系统属性,${FOO}从“FOO”环境变量中插入“BAR”值

另请参阅ServletContextPropertyPlaceholderConfigurer - SYSTEM_PROPERTIES_MODE_OVERRIDE属性和其他一些选项。

答案 1 :(得分:0)

试试这个(Spring Expression Language)

<bean id="dataSource" ...>
   <property name="jdbcUrl" value="#{systemEnvironment.FOO}" />
...
</bean>

或添加此行

<context:property-placeholder/>

到应用程序上下文

相关问题