我想使用我的系统环境变量(即我在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,但似乎不适合我
答案 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/>
到应用程序上下文