1

我需要在我的 Spring Boot 应用程序中加载一些外部资源文件,如下所示...

getClass().getClassLoader().getResource("mongoKerberos.Keytab");

花了一段时间后,我意识到带有类路径的 java 命令(如下所示)不适用于 Spring Boot jar

java -cp /config-location/ -jar myApplication.jar 

在网上阅读了一些文献后,我了解了几个选项,一个是使用zip布局(本质上是用来创建一个fat jar),使用spring-boot-maven-plugin中的配置(如下所示),它使用 org .springframework.boot.loader.PropertiesLauncher

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

并在命令行中指定属性文件,如下所示

java -Dloader.path=/workspace/SpringBoot/config/ -jar SpringBoot.jar

另一个选项是保留默认布局(在我的情况下为jar),但更改默认引导加载启动器类并指定属性文件位置,如下所示

java -Dloader.path=/workspace/SpringBoot/config/ -cp SpringBoot.jar org.springframework.boot.loader.PropertiesLauncher

两种解决方案都有效,但我想知道是否会有任何副作用(如启动时间增加或运行时任何其他不良行为)

或者,如果有任何其他更好的替代解决方案来包含外部资源文件,如 keytab、some-connection-truststore.jks 等

4

0 回答 0