如何在Spring配置属性中引用OS Env?

时间:2017-09-19 06:34:18

标签: spring spring-mvc docker

我在Docker容器中运行一个项目,我想将项目属性(在application.properties文件中设置)设置为OS Env。

例如,M2_HOME是一个操作系统环境,现在我需要在m2_home=${M2_HOME}等弹簧配置属性中使用它,所以我可以在我的项目中使用m2_home

我试过配置如下:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath*:/resource/application-${profiles.active}.properties</value>
    </property>
    <property name="searchSystemEnvironment">
        <value>true</value>
    </property>
    <property name="ignoreUnresolvablePlaceholders">
        <value>true</value>
    </property>
</bean>

但它不起作用。我能做些什么来实现我的目标?

1 个答案:

答案 0 :(得分:0)

我去过那里很多次:为项目设置一个Docker镜像,并且必须支持[不那么]带有基于文本的配置文件的旧版应用程序。

Confd(https://github.com/kelseyhightower/confd)对我有好处,但这对于这样一个微不足道的任务来说有点过分。 Confd非常适合从集群KV商店中获取配置,因此需要一点点的仪式。

所以我最终简化了一些事情:Templater(https://github.com/reertech/templater)。您可以下载没有依赖关系的独立二进制文件,并立即使用它。当你运行它时,需要Go模板(这里是语言https://golang.org/pkg/text/template/的快速参考)并将其处理到输出文件中,允许您替换计算值并获取环境变量。

希望这有助于你,至少是一些未来的流浪者!