Spring启动 - 外部化配置属性

时间:2015-09-23 06:46:54

标签: java spring-boot classpath

我的应用程序是一个带有嵌入式tomcat的Spring Boot应用程序。它使用名为" config.properties"的属性文件。用于存储各种应用程序级属性。我在我的应用程序中加载属性文件:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:config.properties</value>
    </property>
</bean>

当属性文件嵌入到jar文件中时,应用程序工作正常,但我想要外化属性文件 - 从系统中的文件夹而不是jar中提供它。

我尝试将文件夹添加到类路径中,然后使用-cp vm参数提供文件夹的位置,但这不起作用。

所以我的问题是如何实现这种情况,其中属性文件是从外部源提供的,而不是从jar中提供的。

2 个答案:

答案 0 :(得分:2)

我已经能够使用以下代码加载文件:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>file:{config.file.location}/config.properties</value>
    </property>
</bean>

并使用 -

启动jar
java -jar -Dconfig.file.location=D:\folder\ myjar.jar

答案 1 :(得分:0)

使用此代码:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>file:/full/path/to/your/file</value>
    </property>
</bean>

使用&#34;文件&#34;您可以指定配置文件所在的完整位置。

修改 如果您想使用内联参数,请删除bean PropertyPlaceholderConfigurer并改为使用它:

-Dspring.config.location=file:/path/to/file/config.properties