Где определить свойства в SpringBoot, общие для всех сред?

У меня есть несколько свойств, общих для всех сред (например, spring.jpa.properties.hibernate.ejb.interceptor), которые я сохранил в application.properties в каталоге ресурсов.

У меня есть свойства БД, определенные в файле свойств на основе среды, который я передаю извне через командную строку при запуске приложения:

java -jar -Dspring.config.location=<path-to-file> mySpringBootProject.jar

Однако spring.jpa.properties.hibernate.ejb.interceptor не устанавливается, когда я передаю файл свойств извне.

Нужно ли мне определять общие свойства даже во внешнем файле? Или есть способ определить их в одном месте, которое будет повторно использоваться, если не будет переопределено?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
737
3

Ответы 3

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, для хранения настраиваемые параметры приложения. Преимущество использования файла свойств заключается в том, что мы можем настроить вещи, которые являются специфические для окружающей среды (или склонны к изменению с течением времени), без необходимости изменения чего-либо в коде. Следовательно, наследование общих свойств - это не лучший подход. Если свойство кажется статичным для всех, например. среды, то это не должно быть собственностью.

Но, возможно, у нас есть несколько сред разработки и производства, где мы будем использовать использовать одни и те же свойства в средах, предназначенных для разработки для целей и различных свойств для производства. В этом случае мы могли бы создать общий файл свойств и унаследовать его от всех файлов свойств, специфичных для нашей среды. Другой сценарий может быть, это на момент застройки собственность одинакова для всех сред, но мы хотели бы предоставить возможность изменить его в будущем, когда это потребуется.

Другие вопросы по теме