Добрый день!
Пожалуй, я лишь дополню ответ своего коллеги
BorLaze некоторыми ссылками на полезные материалы.
1 - насчет вынесения properties файла за пределы приложения:
https://docs.spring.io/spring-boot/docs/2.1.8.RELE...
В частности обратите внимание на:
SpringApplication loads properties from application.properties files in the following locations and adds them to the Spring Environment:
A /config subdirectory of the current directory
The current directory
A classpath /config package
The classpath root
The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).
Вот, еще по этой же теме:
https://www.baeldung.com/spring-properties-file-ou...
Это Spring Boot + Docker:
https://stackoverflow.com/questions/46057625/exter...
Вот, еще информация о том, как можно исключить внешний конфиг файл
https://stackoverflow.com/questions/26140784/sprin...
https://stackoverflow.com/questions/26744060/exclu...
Насчет хранения паролей в properties, вы можете воспользоваться - Jasypt
Ссылка на первоисточник:
https://stackoverflow.com/questions/37404703/sprin...
Еще можно при старте приложения передать значения этих данных при помощи аргументов.
Т.е. хранить в properties что-то типа ftp.host=example.com А при старте приложения использовать что-то типа такого:
mvn spring-boot:run -Dspring-boot.run.arguments=--ftp.host=mysite.com
https://www.baeldung.com/spring-boot-command-line-...
В микросервисах подобная задача решается несколько иначе - поднятием отдельного конфиг сервера, который подтягивает конфигурацию извне при старте приложения. Но думаю, что это вам пока не нужно