如何在Spring(Spring Boot)中将外部配置资源包含到classpath中?

时间:2017-08-02 07:25:16

标签: spring spring-boot

我有第三方库,通过将属性文件放在类路径的根目录来配置。该库正在使用getClass().getResourceAsStream("/file.properties")加载该文件。因为它是第三方,它是不可修改的。我已将该配置文件放入外部 resources目录中(不要误解为来自例如Maven的resources或Gradle的目录结构。< / p>

目录结构就是这样。

Dir stricture

如何运行/配置Spring引导以将resources目录的内容包含到类路径中,以便getResourceAsStream工作?

在SE应用程序中,我只需在MANIFEST中使用classpath执行java -jar myApp.jar即可。

编辑:

只需澄清一下 - 将配置文件放在项目资源(沿源)中就完全没有了。我想保持配置外部化。

1 个答案:

答案 0 :(得分:4)

以下是如何做到这一点:

1.-更改spring-boot-maven-plugin configuration以启用Spring Boot PropertiesLauncher:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <layout>ZIP</layout>
            </configuration>
        </plugin>
    </plugins>
</build>

2.-启动Spring Boot Application设置外部属性文件的位置:

java -jar -Dloader.path=PATH_TO_PROPERTIES_FOLDER spring-ms-0.0.1-SNAPSHOT.jar

假设这个文件夹:

/home/user/
     |--- file.properties
     |--- spring-mg-0.0.1-SNAPSHOT.jar 

您应该按照以下方式启动它:java -jar -Dloader.path=/home/user spring-ms-0.0.1-SNAPSHOT.jar