Знания меняют судьбу, программирование делает меня счастливым, и я продолжу шагать в мире открытого исходного кода в 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