Знания меняют судьбу, программирование делает меня счастливым, и я продолжу шагать в мире открытого исходного кода в 2020 году.
Ставьте лайк и смотрите снова, формируйте привычку
дай мне звезду,Нажмите, чтобы узнать о решении для посадки службы компонентного интерфейса на основе SpringBoot.
SpringBoot
Конфигурационный файл согласован, по умолчаниюapplication.properties
, многие конфигурации по умолчанию могут быть изменены через этот файл.Конечно, мы также можем добавить пользовательские конфигурации в этот файл конфигурации.key=value
конфигурация в форме.
Рекомендуемое чтение
Запутались в советах по настройке?
Когда мы используем средства разработки для настройки, появится соответствующая подсказка, и все это благодаряspring-configuration-metadata.json
Файл метаданных конфигурации, который записываетназвание,Типы,Атрибуцияи другую информацию, если тип конфигурации枚举
также может быть достигнуто选择性配置
.
SpringBoot
Предоставляет зависимость, основной задачей которой является автоматическое создание метаданных конфигурации.spring-boot-configuration-processor
, при упаковке будет вMETA-INF
Каталог создает файл с именемspring-configuration-metadata.json
документ.
Метод конфигурации
Хотя по умолчаниюproperties
Отформатируйте файл конфигурации, но этот метод приведет к избыточной части префикса конфигурации, чуть менее читаемой,SpringBoot
Внутренне также поддерживает использованиеyaml
способ файла конфигурации, просто нужно быть вsrc/main/resources
Создайте каталог с именемapplication.yml
Файла достаточно, и он также предоставляет функции при использовании конфигурации.
Может существовать в проекте одновременноapplication.properties
,application.yml
Два файла, после тестирования, нашел,properties
Приоритет будет выше, одноименная конфигурация будетyml
Конфигурация внутри перезаписывается.
Укажите файл конфигурации
Если имя файла конфигурации вашего приложения неapplication
, вы хотите настроить его с помощью--spring.config.name
Аргументы командной строки задаются следующим образом:
java -jar project-sample.jar --spring.config.name=custome
**Примечание:** Нам нужно только указать имя файла конфигурации, вы можете использовать
properties
илиyaml
формат файла, указанная выше конфигурация будет загруженаsrc/main/resources/custome.yml
илиsrc/main/resources/custome.properties
.
пройти через--spring.config.name
Просто изменив имя файла конфигурации, что нам нужно сделать, если мы изменим расположение каталога, в котором находится файл конфигурации?
SpringBoot
был подготовлен для нас,--spring.config.location
Параметр может указывать расположение файла конфигурации следующим образом:
java -jar project-sample.jar --spring.config.location=classpath:/configs/custome.yml
Если файл конфигурации не соответствует вашим потребностям, то вы можете посмотреть следующим образом:
java -jar project-sample.jar --spring.config.location=classpath:/configs/custome.yml,classpath:/configs/default.properties
**Примечания.** Поддерживает указание нескольких файлов конфигурации с помощью параметров командной строки с использованием полуширины на английском языке.
,
Просто отдельно.
если вы пройдетеspring.config.location
Укажите не файл, а каталог, обязательно добавьте "/" в конце пути, а затем объединитеspring.config.name
Создайте файл конфигурации комбинации, пример комбинации выглядит следующим образом:
# 加载/configs/application.properties 或 /configs/application.yml(默认文件名)
java -jar project-sample.jar --spring.config.location=classpath:/configs/
# 加载/configs/custome.properties 或 /configs/custome.yml
java -jar project-sample.jar --spring.config.location=classpath:/configs/ --spring.config.name=custome
Меры предосторожности:
spring.config.name
Значение по умолчанию для этого параметра конфигурации:application
, поэтому, если просто указатьspring.config.location
А в виде каталога приведенный выше пример будет автоматическиspring.config.name
После добавления к пути к каталогу, если указанныйspring.config.location
это не каталог, здесь он будет проигнорированspring.config.name
значение .
порядок загрузки
SpringBoot
При запуске приложения файлы конфигурации загружаются в следующем порядке:
- Файлы конфигурации в пути к классам
- Файлы конфигурации в подкаталоге config пути к классам
- Файл конфигурации в корневом каталоге текущего проекта
- Файл конфигурации в подкаталоге config текущего корневого каталога проекта.
Структура хранения файла конфигурации примера проекта выглядит следующим образом:
. project-sample
├── config
│ ├── application.yml (4)
│ └── src/main/resources
| │ ├── application.yml (1)
| │ └── config
| | │ ├── application.yml (2)
├── application.yml (3)
Порядок загрузки конфигурационных файлов при запуске: 1 > 2 > 3 > 4
src/main/resources
Приведенный ниже файл конфигурации будет помещен в проект при его компиляции.target/classes
Вниз.
переопределение приоритета
SpringBoot
В файле конфигурации есть функция,Конфигурации с более высоким приоритетом загружаются позже,相同名称
Конфигурация优先级较高
встреча覆盖
Терять优先级较低
Содержание.
Чтобы лучше объяснить это, мы создаем отдельный в соответствии с соответствующим порядком загрузки.application.yml
Файл конфигурации для проверки наличия проблем с покрытием в соответствии с различными приоритетами, как показано на следующем рисунке:
В приведенных выше четырех файлах конфигурации есть файл с именемname
конфигурация, а содержимое, отмеченное красным шрифтом, представляет собой каждый файл конфигурацииname
Содержимое конфигурации, давайте запустим проект, чтобы протестировать выходное содержимое.
запустить тест
Перед тестированием мы позволяем стартовому классу реализоватьCommandLineRunner
интерфейс следующим образом:
@SpringBootApplication
public class LoadOrderOfConfigFilesApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(LoadOrderOfConfigFilesApplication.class, args);
}
@Value("${name}")
private String name;
@Override
public void run(String... args) throws Exception {
System.out.println("配置名称:" + name);
}
}
После запуска проекта черезrun
метод печати${name}
содержание конфигурации.
Тест 1: последовательное покрытие
Сохраните указанные выше четыре файла конфигурации в соответствии с порядком загрузки, запустите проект и выведите содержимое консоли:
配置名称:project/config
Ожидания соответствуют фактическому результату в корне проектаconfig
каталог最后加载
, так что это优先级
по сравнению с тремя другими最高
из,Порядок переопределения: 4> 3> 2> 1.
Тест 2: кросс-последовательное покрытие
В последней контрольной точке мы добавили файл конфигурации для каждого порядка загрузки, поэтому, если у нас есть только дваproject/config
,classes/config
Являются ли файлы конфигурации двух каталогов приоритетными?
удалить два других, оставить толькоproject/config
,classes/config
Файлы конфигурации в двух местах, вывод консоли запуска проекта выглядит следующим образом:
配置名称:project/config
Также выведите наивысший приоритетproject/config
содержимое конфигурационного файла,Порядок переопределения: 4 > 1
Контрольные точки: одиночная последовательная загрузка
Обычно при разработке проектаapplication.yml
файл конфигурации вsrc/main/resources
каталог, но в соответствии с приведенным выше порядком загрузки мы можем разместить файл конфигурации где угодно, и он будет загружен при запуске.
оставить толькоclasses/config
Файл конфигурации расположения и выходные данные консоли запуска проекта выглядят следующим образом:
配置名称:classes/config
IDEA
правильноSpringBoot
Поддержка действительно сильная,classes/config
Файл конфигурации ниже также предоставляет关键字提醒
Функции.
Суммировать
Только поняв порядок загрузки конфигурационных файлов, вы сможете легко выполнять охват конфигурации и полностью контролировать использование различного содержимого конфигурации в разных средах.classes/application.yml
самый низкий приоритет,project/config/application.yml
наивысший приоритет.
автор личноблогИспользуйте фреймворк с открытым исходным кодомApiBootПомочь вам стать архитектором сервисов интерфейса API