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 скобки должны быть заключены в кавычки для правильного анализа ключей.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки