Файлы Spring Boot и внешние ресурсы (например, keytab) - PullRequest
1 голос
/ 04 февраля 2020

Мне нужно загрузить несколько файлов внешних ресурсов в мое приложение 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

...