Spring Boot: смягченная привязка
Spring Boot использует некоторые смягченные правила для привязки свойств Environment к bean-компонентам @ConfigurationProperties, поэтому нет необходимости в точном соответствии между именем свойства Environment и именем свойства bean-компонента. К распространенным примерам, в которых это полезно, относятся свойства среды, разделенные дефисом (например, привязка context-path к contextPath), и свойства среды с большой буквы (например, привязка PORT к port).
В качестве примера рассмотрим следующий класс @ConfigurationProperties:
@ConfigurationProperties(prefix="acme.my-project.person")
public class OwnerProperties {
private String firstName;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
С помощью предыдущего кода можно использовать следующие имена свойств:
Смягченная привязка
Свойство | Описание |
---|---|
acme.my-project.person.first-name | Вариант с дефисами (Kebab case), который рекомендуется использовать в файлах .properties и .yml. |
acme.myProject.person.firstName | Стандартный camel case синтаксис. |
acme.my_project.person.first_name | Нотация с подчеркиванием, которая является альтернативным форматом для использования в файлах .properties и .yml. |
ACME_MYPROJECT_PERSON_FIRSTNAME | Формат верхнего регистра, который рекомендуется при использовании системных переменных среды. |
Значение префикса для аннотации должно быть в kebab case (нижний регистр и разделенный - (дефисом), например, acme.my-project.person).
Правила расслабленного связывания для источника свойства
Источник свойства |
Простое | Список |
---|---|---|
Файлы свойств | Camel case, kebab case, или нотация с подчеркиванием | Стандартный синтаксис списка с использованием [] или значений через запятую |
YAML файлы | Camel case, kebab case, или нотация с подчеркиванием | Стандартный синтаксис списка YAML или значения, разделенные запятыми |
Переменные среды | Формат в верхнем регистре с подчеркиванием в качестве разделителя. _ не должен использоваться внутри имени свойства | Числовые значения, заключенные в подчеркивания, такие как MY_ACME_1_OTHER = my.acme[1].other |
Свойства системы | Camel case, kebab case, или нотация с подчеркиванием | Стандартный синтаксис списка с использованием [] или значений через запятую |
Рекомендуется, чтобы, когда это возможно, свойства сохранялись в kebab формате в нижнем регистре, например my.property-name=acme.
При привязке к свойствам карты, если ключ содержит что-либо, кроме буквенно-цифровых символов в нижнем регистре или - (дефис), необходимо использовать обозначение в скобках, чтобы сохранить исходное значение. Если ключ не заключен в [], любые символы, которые не являются буквенно-цифровыми или - (дефис) удаляются. Например, рассмотрите возможность привязки следующих свойств к карте:
acme:
map:
"[/key1]": value1
"[/key2]": value2
/key3: value3
Приведенные выше свойства будут привязаны к карте с помощью ключей /key1, /key2 и key3 в качестве ключей в карте.
Для файлов YAML скобки должны быть заключены в кавычки для правильного анализа ключей.
Читайте также:
- Spring Boot: проверка типов свойств конфигурации, связывание свойств JavaBean
- Spring Boot: проверка типов свойств конфигурации, привязка конструктора
- Spring Boot: включение типов аннотированных @ConfigurationProperties
- Spring Boot: использование типов аннотированных @ConfigurationProperties
Комментарии
Отправить комментарий