Запуск jar на другом комьютере с другим конфигом
Ситуация следующая: Мне нужно написать сервис на Spring Boot с использованием Kafka и MongoDB. Данные для подключения к ним находятся в config.json на сервере, к которому у меня нет доступа. По ТЗ мне нужно локально поднять у себя Mongo/Kafka и настроить конфиг для тестов. Потом собрать сервис в .jar и отправить на проверку.
Проблема: После сборки приложения в .jar локальный файл с конфигом - application.properties - тоже будет упакован в .jar; Путь к данным для подключения в config.json - mongo.database.; Путь к данным для подключения в application.properties - spring.data.mongodb.;
Вопрос: Каким образом мне указывать путь к данным через @Value(${}), если путь в локальном конфиге и в конфиге на тестовом сервере разные?
UPD: Короче, пришлось добавлять класс, имплементирующий CommandLineRunner, брать путь к файлу конфига из аргументов командной строки, создавать в приложении класс Config и парсить полученный JSON в этот Config. Дальше можно брать нужные пропы из этого Config объекта, как из обычного DTO
Ответы (1 шт):
Вы можете при запуске указать несколько конфигурационных файлов, использоваться будут все из них. Для этого надо запускать jar файл так:
$ java -jar myproject.jar --spring.config.location=classpath:/application.properties,file:///home/user/config.json
То есть через запятую перечисляются все используемые конфиги, первый из них - это ваш конфиг по умолчанию application.properties находящийся внутри проекта, второй - внешний конфиг.