У меня есть несколько свойств, общих для всех сред (например, spring.jpa.properties.hibernate.ejb.interceptor), которые я сохранил в application.properties в каталоге ресурсов.
У меня есть свойства БД, определенные в файле свойств на основе среды, который я передаю извне через командную строку при запуске приложения:
java -jar -Dspring.config.location=<path-to-file> mySpringBootProject.jar
Однако spring.jpa.properties.hibernate.ejb.interceptor не устанавливается, когда я передаю файл свойств извне.
Нужно ли мне определять общие свойства даже во внешнем файле? Или есть способ определить их в одном месте, которое будет повторно использоваться, если не будет переопределено?




application.properties обычно замещается загрузочными проектами. Вместо этого вы можете добавить файл свойств в неконфликтное место (например, src/main/resources/my/package/foo.properties) и использовать @PropertySource в своем файле автоконфигурации, чтобы добавить его.
Для этого вы можете использовать несколько профилей. Например, создайте файлы свойств:
application-dev.properties
application-prod.properties
application.properties
Поместите свойства вашей среды в файл application-${env}.properties, а общие свойства - в application.properties.
Есть несколько способов указать Spring, какие профили использовать, например, флаг --spring.profiles.active.
См. Документация по Spring Boot для получения более подробной информации о порядке поиска файла свойств.
Свойства - это расширение файла для файлов, которые в основном используются в технологиях, связанных с Java, для хранения настраиваемые параметры приложения. Преимущество использования файла свойств заключается в том, что мы можем настроить вещи, которые являются специфические для окружающей среды (или склонны к изменению с течением времени), без необходимости изменения чего-либо в коде. Следовательно, наследование общих свойств - это не лучший подход. Если свойство кажется статичным для всех, например. среды, то это не должно быть собственностью.
Но, возможно, у нас есть несколько сред разработки и производства, где мы будем использовать использовать одни и те же свойства в средах, предназначенных для разработки для целей и различных свойств для производства. В этом случае мы могли бы создать общий файл свойств и унаследовать его от всех файлов свойств, специфичных для нашей среды. Другой сценарий может быть, это на момент застройки собственность одинакова для всех сред, но мы хотели бы предоставить возможность изменить его в будущем, когда это потребуется.