Мне нужно загрузить несколько файлов внешних ресурсов в мое приложение Spring Boot, что-то вроде ниже ...
getClass().getClassLoader().getResource("mongoKerberos.Keytab");
Потратив некоторое время, я понял, что команда java (как показано ниже) с классом путь не будет работать с Spring Boot jar
java -cp /config-location/ -jar myApplication.jar
Прочитав некоторую литературу в Интернете, я узнал о нескольких вариантах, один из них - использовать макет zip (который по сути используется для создайте толстую банку ), используя конфигурации в 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 et c