Имам приложение за пролетно зареждане и то има множество файлове с имоти, по един за всяка локална среда, dev, test, performance, production.
Неотдавна имахме инцидент, в който някой забрави да постави нов имот във файла с производствените имоти и системата не работи с часове в производството.
Въпросът ми е, има ли някакви по-добри практики за това как да се поддържат свойствата в множество файлове с имоти?
В момента мисля за полезност, може би за единичен тест, който проверява всеки ключ съществува във всеки файл със свойство и той няма да успее да построи, ако тя не съществува.
Направих няколко търсения, но не можах да намерямного. Разбирам термините на въпроса и че искам мнението тук. Повече търся да науча по-добрите практики за поддържане на файлове с имоти.
Отговори:
3 за отговор № 1Трябва да използвате различни файлове с свойства за различни среди
application-qa.properties за QA среда
заявка- собственост за производствена среда
application-local.properties за местна среда
След това използвайте няколко скрипта, за да стартирате приложението за различни среди, както и всеки скрипт
mvn spring-boot: изпълнете -Drun.profiles = qa
mvn spring-boot: изпълнете -Drun.profiles = prod
mvn spring-boot: изпълнете -Drun.profiles = local
Например application-local.properties файла е:
spring.profiles.active = местно
spring.data.mongodb.host = Localhost
spring.data.mongodb.port = 27017
spring.data.mongodb.database = my_db_name
spring.data.mongodb.username = some_user_name
spring.data.mongodb.password = some_password
spring.rabbitmq.host = Localhost
spring.rabbitmq.username = гост
spring.rabbitmq.password = гост
spring.rabbitmq.port = 5672
rabbitmq.publish = вярно
1 за отговор № 2
Да, тази стандартна практика следваотделни свойства зависими от околната среда и да ги инжектират, използвайки spring.profile.active, но описаният от вас сценарий изглежда по-скоро човешка грешка и може да се случи с която и да е програма, може да има тест за проверка на свойствата, но въвежда въпрос за поддръжка. Предпочитам да управлявам свързаните с производството свойства с помощта на конфигурацията от пролетен облак (тук) защото производствените свойства могат да съдържат идентификационни данни за db и секретни ключове, които могат да бъдат изтеглени.
1 за отговор № 3
Можете да използвате файл със свойства по подразбиране. Ако няма свойство в конкретен конкретен файл на env, тогава той ще погледне в този файл със свойства.
когато е възможно, докато разрешавате свойството през пролетта, опитайте се да предоставите стойност по подразбиране. За напр. @Value ( "$ {mongodb.url: 127.0.0.1}")