Основы SpringBoot2.x: использование заполнителей в файлах конфигурации

Spring Boot

Знания меняют судьбу, программирование делает меня счастливым, и я продолжу шагать в мире открытого исходного кода в 2020 году.
Ставьте лайк и смотрите снова, формируйте привычку
дай мне звезду,Нажмите, чтобы узнать о решении для посадки службы компонентного интерфейса на основе SpringBoot.

концепция

占位符Это гибкий метод настройки, который позволяет нам гибко использовать параметры конфигурации.@ValueКонфигурация аннотаций также является проявлением заполнителей, доступ к которым можно получить изEnvironmentполучить соответствующий配置值.

Рекомендуемое чтение

Метод конфигурации

существуетapplication.yml/propertiesможно использовать непосредственно в файле конфигурации占位符Чтобы сделать взаимную ссылку конфигурации, выполните следующие действия:

system:
  name: ${spring.application.name}
spring:
  application:
    name: project-sample

В приведенной выше конфигурацииnameКонфигурация напрямую упоминаетсяspring.application.nameЗначение конфигурации , так что мы передаем@Value("${name}")или через@ConfigurationPropertiesПри использовании таким образом полученные значения всеproject-sample.

// @Value方式
@Value("${system.name}")
private String name;

// @ConfigurationProperties方式
@Configuration
@ConfigurationProperties(prefix = "system")
static class LoadConfig {
  private String name;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

СюдаЗначительно уменьшает ту же конфигурациюпоявляйся, впусти нас配置文件Также можно добиться чего-то вроде常量Определение.

использовать по умолчанию

когда мы используем@Valueаннотация для ввода параметров конфигурации, если введенная конфигурацияNULL, при запуске проекта будет выброшено исключение, и проект не может быть запущен нормально, поэтому нам необходимо добавить значение по умолчанию следующим образом:

system:
  name: ${spring.application.name:default}
#spring:
#  application:
#    name: project-sample

В приведенной выше конфигурации поместитеspring.application.nameзакомментировано, когда мы используем${spring.application.name}Заполнитель на самом деле не относится к допустимому значению через${xxx:defaultValue}Форма может быть настроена со значениями по умолчанию, когда конфигурация, на которую ссылается заполнитель,NULL, значение по умолчанию (Тип значения по умолчанию должен соответствовать конфигурации).

также через@Value("${system.name:default}")Этот способ настройки значения по умолчанию не рекомендуется.Когда значение по умолчанию изменяется, мы должны изменить его один за другим.

Конечно, рекомендуется использовать внедрение конфигурации.@ConfigurationProperties, следовать точноOOPПо замыслу назначение выполняется при запуске приложения, даже если указанная конфигурацияNULLНет значения по умолчанию, и нет проблем с исключениями при запуске.

«Короткие» аргументы командной строки

Если вы не знакомы с аргументами командной строки, вы можете посетитьБазовая статья Springboot2.x: Гибкое использование внешней информации о конфигурацииУчиться.

При фактическом развертывании приложения большая часть конфигурации является динамической,命令行Тем не менее, параметры — хороший способSpringBootПредоставленные имена параметров конфигурации относительно длинные, и мы можем воспользоваться этим.占位符Метод конфигурации реализует настройку.

占位符ОтEnvironmentпрочитать соответствующее значение конфигурации в命令行参数будет добавлено в приложение при его запускеEnvironment, так и реализовано占位符Динамическая конфигурация, на самом деле, значение слова «короткий» заключается в том, что новое имя конфигурации, которое вы определяете, является относительно коротким.

Предполагая, что наш номер порта должен быть указан динамически, файл конфигурации можно настроить следующим образом:

server:
  port: ${port:8080}

portэто то, что мы определяем как «короткий»占位符, если не указано при запуске приложения, используется значение по умолчанию8080.

java -jar project-sample.jar --port=9090

пройти через--port=9090Параметры командной строки, номер порта становится9090.

автор личноблогИспользуйте фреймворк с открытым исходным кодомApiBootПомочь вам стать архитектором сервисов интерфейса API