Spring Boot предоставляет два обычно используемых файла конфигурации, а именно файл свойств и файл YML. Их функция состоит в том, чтобы изменить значение по умолчанию автоматической конфигурации Spring Boot. По сравнению с файлами свойств, файлы YML моложе и имеют много ловушек. Можно сказать, что Сяо он преуспевает и терпит неудачу Сяо Хе. YML определяет отношение иерархии через пространства, которая является структурой файла конфигурации и ясным, но также разрушит отношения иерархии из -за незначительных пространств. Эта глава посвящена синтаксису YML и получению значений из файлов конфигурации. Чего вы ждете? Приходите и учитесь быстро!
Технология: YAML, Синтаксис свойств, использование конфигурационных продуктов и аннотаций значения, использование заполнителей файла конфигурации.
Примечание. Эта глава посвящена синтаксису YAML и использованию аннотаций ConfigurationProperties. Пожалуйста, перейдите в GitHub для тестирования кода и полного кода. Друзья, которым нравится, могут нажать на звезду.
Исходный код: https://github.com/itdragonblog/daydayup/tree/master/springboot/spring-boot-yml
Структура каталогов статьи:
1. Введение в YAML
YML-это файл на языке YAML (YAML AINT Markup Language), который ориентирован на данные и более подходит для файлов конфигурации, чем JSON, XML и т. Д.
По сравнению с XML, YML имеет менее структурированный код, что делает данные более прямыми и ясными с первого взгляда.
Как насчет YML и JSON? Никто не хорош или плохо, правильный - лучший. Синтаксис YML элегантен, чем JSON, с большим количеством стандартных аннотаций, и подходит для файлов конфигурации. В качестве формата обмена машины JSON сильнее YML и более подходит для обмена данными для вызовов API.
1) Синтаксис YAML
Контрольные иерархические отношения по степени отступления пространств. Количество пробелов не важно, если пространства слева выровняются, они считаются тем же уровнем. Обратите внимание, что вкладки нельзя использовать вместо пространств. И чувствителен к корпусу. Он поддерживает три структуры данных: буквальное значение, объект и массив, а также поддерживает композитные структуры.
Буквальное значение: строка, логический тип, числовое значение, дата. Строки не цитируются по умолчанию, а отдельные кавычки избегают специальных символов. Формат даты поддерживает yyyy/mm/dd hh: mm: ss
Объект: состоит из пар клавишных значений, данные в форме ключа: (пространство) значение. Пространства после толстой кишки необходимы. Каждый набор пар ключевых значений занимает одну линию, и степень отступления должна быть последовательной. Вы также можете использовать встроенный метод написания: {K1: V1, .... KN: VN}
Массив: состоит из данных с формой значения -(пространство). Пространства за короткой горизонтальной линией необходимы. Каждый набор данных занимает одну линию, и степень отступления должна быть последовательной. Вы также можете использовать встроенный метод написания: [1,2, ... n]
Составная структура: любая комбинация из трех вышеупомянутых структур данных
Ii) Применение YAML
Создайте приложение для глобальной конфигурации Spring Boot Application.yml и настройте параметры свойства. В основном есть строки, строки со специальными символами, логические типы, значения, коллекции, встроенные коллекции, встроенные объекты и объекты сбора.
YAML: Str: String может быть без кавычек SpecialStr: «Двойные цитаты непосредственно вывод /n Специальные символы» «SpecialStr2:« Одиночные цитаты могут побежать /n Специальные символы »Флаг: False Num: 666 DNUM: 88,88 СПИСОК: - Один - два - два набора: [1,2,2,3] MAP: {K1: V1, K2: V2} Полиция: - Имя: 15000.00 - 15000. Зарплата: 18888.88Создайте класс объектов yamlentity.java Получить значение свойства в файле конфигурации, получить указанное значение в файле конфигурации, аннотируя @ConfigurationProperties и введите его в класс Entity. Пожалуйста, продолжайте смотреть на его конкретные методы испытаний и принцип получения значений!
Import org.springframework.boot.context.properties.configurationProperties; Import org.springframework.stepolyte.component; импорт java.util.list; import java.util.map; импорт java.util.set;/** * yaml syntax class * Запомните: * optem. spaces way sticle, valive water whip wase whopse wase whops stice was hipces stere -wome sticle, ward wom. 2. Количество пробелов в левой стороне каждого параметра строки определяет уровень параметра и не вводится случайным образом. */@Component@configurationproperties (prefix = "yaml") открытый класс yamlentity {// буквальное значение, строка, логическое, числовое частное строку; // нормальная строка частная строка Specialstr; // Escape Special String Private String SpecialStr2; // Выход Special String Private Boolean Flag; // логический тип частного целого числа; // целое число частных двойных dnum; // Десятичный // массив, список и установить, два способа написать: первое: - значение пространства, каждое значение занимает одну строку и необходимо отступать и выровнять; Второе: [1,2, ... n] встроенный в линии частного списка <object> list; // Список повторяющегося набора частного набора <object> set; // SET не может быть повторены SET // MAP и классы объектов, два способа записи: первое: значение ключевого пространства, каждое значение занимает одну строку, и необходимо отступать и выровнять; Второе: {key: value, ....} in-line writice private map <string, object> map; // Карта KV частный список <fice> Positions; // Составная структура, объект сбора // Опустить Getter, Setter, ToString Methods}3) Сводка YML
1. Строка может быть без кавычек. Если добавлены двойные кавычки, выводятся специальные символы. Если не добавлены единые кавычки, специальные символы будут сбежать;
2. Для типа массива должны быть места за короткими горизонтальными линиями; Для типа объекта должны быть места за толстой кишкой;
3. YAML управляет иерархическими отношениями, основанными на степени космического отступления, но клавиша TAB не может использоваться вместо пространств, и это чувствительно к случаю;
4. Как сделать программист сбой? Добавьте несколько пробелов в файл YML! (〃> Блюдо <)
2. Введение в свойства
Каждый часто использует свойства файлов, поэтому я кратко представляю их здесь. Его синтаксическая структура похожа на: key = значение. Обратите внимание на проблему искаженного кода Китая и необходимо транскодировать в ASCII. Детали следующие:
userinfo.account = itdragonbloguserinfo.age = 25userinfo.active = trueUserinfo.created-date = 2018/03/31 16: 54: 30userinfo.map.k1 = v1userinfo.map.k2 = v2userinfo.list = One, ThreeSerinfo.position. userInfo.position.salary = 19999.99
Возьмите значения из файлов конфигурации и введите их в классы объектов, что такое же, как YAML.
import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import java.util.Date;import java.util.List;import java.util.Map;/** * User Information* @ConfigurationProperties: All properties in the modified class will be bound to the specified value in the Файл конфигурации (значение найдено через префикс)*/@component@configurationproperties (prefix = "userinfo") открытый класс userinfo {private String account; частный целый возраст; Частный логический активный; Частная дата создана; Приватная карта <строка, объект> карта; частный список <object> list; частная позиция; // Опустите Getter, Setter, ToString Methods}3. Значение файла конфигурации
Spring Boot получает свойства из файлов конфигурации через аннотацию ConfigurationProperties. Из приведенного выше примера мы видим, что аннотация ConfigurationProperties может указывать данные, которые необходимо импортировать партиями, установив префикс. Поддерживает получение сложных данных, таких как литералы, коллекции, карты, объекты и т. Д. В чем разница между этим и аннотацией стоимости пружины? Имея в виду эти вопросы, давайте продолжим смотреть вниз. (๑ • ̀ㅂ • ́) و✧
А) Плюсы и минусы конфигурации и значения
Плюсы и минусы аннотаций конфигурации
1. Вы можете пакетировать свойства инъекции из файла конфигурации;
2. Поддерживает получение сложных типов данных;
3. Требования к сопоставлению имен атрибутов низкие, такие как имя пользователя, user_name, username и user_name могут получить значения;
4. Поддержка проверки данных JSR303 Java;
5. Недостатком является то, что он не поддерживает мощные выражения Spel;
Преимущества и недостатки аннотации стоимости являются как раз наоборот. Он может настраивать значения впрыска один за другим; Он не поддерживает сложные типы данных, такие как массивы и коллекции; Он не поддерживает проверку данных; Он имеет строгие требования для сопоставления имени свойств. Самая большая особенность заключается в том, что он поддерживает выражения SPEL, делая его более богатыми функциями.
2) @ConfigurationProperties подробное объяснение
Шаг 1: Импорт зависимости. Чтобы использовать аннотацию ConfigurationProperties, вам необходимо импортировать зависимость-образец-конфигурации пружины;
Шаг 2: Настройте данные. В файле конфигурации Application.yml настраивайте параметры атрибута, префиксированный ITDRAGON, а параметры имеют буквальные значения и массивы, которые используются для определения того, поддерживается ли возможность получить сложные атрибуты;
Шаг 3: Сопоставьте данные. Добавьте конфигурацию аннотации в классе и установите значение свойства префикса в ITDRAGON. И добавьте этот класс в контейнер IOC весеннего.
Шаг 4: Проверьте данные. Добавить проверку данных проверки аннотации, включить проверку данных и проверить, поддерживает ли она проверку данных;
Шаг 5: Проверьте, поддерживает ли аннотация ConfigurationProperties выражения SPEL;
Зависимости импорта: pom.xml Добавить зависимости от пружины-бутовой конфигурации
<Depective> <groupId> org.springframework.boot </GroupId> <ArtifactId> pring-boot-configuration-processor </artifactid> <plociate> true </opportal> </vehyse>
Данные конфигурации: Приложение. Параметры свойства конфигурации, ни одна имени используется для оценки ослабления соответствующих свойств. Если изменить на nick_name, вы все равно можете получить значение.
ITDRAGON: NIC-name: ITDRAGONBLOG Электронная почта: [email protected] iPhone: 1234567890 Способности: [Java, SQL, HTML] Creation_Date: 2018/03/31 15:27:30
Соответствовать и проверить данные:
Импорт org.springframework.boot.context.properties.configurationProperties; импорт org.springframework.stereotyle.component; импорт org.springframework.validation.annotation.validated; импорт javax.validation.constraints.email; ConfigurationProperties Annotation Class класс* Шаг 1: Импорт зависимости Spring-Boot-Configuration-Processor; * Шаг 2: Добавьте класс, измененный с помощью аннотации ConfigurationProperties в контейнер IOC Spring; * Шаг 3: Установите атрибут префикса и укажите префикс, который необходимо ввести; * Шаг 4: Добавьте аннотацию проверки данных, чтобы включить проверку данных; ** Примечание:* 1. Прозвище и созданные даты находятся в файле конфигурации YML, и соответствующими параметрами являются сетки и подставки, соответственно, используются для проверки их повышения квалификации соответствующих имен атрибутов* 2. ConfigurationPropertiesentity {Private String Nickname; // Проанализирование успешно, поддержка свободных соответствующих атрибутов частной строки Электронная почта; // @Email // Отсутствие диапазона не удалось, а проверка данных была успешной: BindValidationException: Ошибки проверки привязки на частной строке ITDRAGO частный список <string> способности; Частная дата создана; // SACESING успешно, поддерживая свободные атрибуты // @ConfigurationProperties ("#{(1+2-3)/4*5}") частное оператор строки; // Синтаксическая ошибка, не поддерживающая выражение SPEL: не применимо к Field // Опустить Getter, SETTER, методы ToString}3) @value подробное объяснение
Предыдущий блог внедрил использование ценностных аннотаций, и вот краткое объяснение.
Шаг 1: Добавьте аннотацию значения в атрибут и значение ввода из файла конфигурации через параметр настройки $ {};
Шаг 2: Измените значение параметра в $ {itdragon.ceatred_date} и измените его на $ {itdragon.ceatreddate}, чтобы проверить, может ли анализ быть успешным;
Шаг 3: Добавьте проверку данных проверки данных, включите проверку данных и проверьте, поддерживает ли она проверку данных;
Шаг 4: Проверьте, поддерживает ли значение Annotation Value Expressions;
Импорт org.springframework.beans.factory.annotation.value; import org.springframework.stereotyle.component; импорт org.springframework.validation.antotation.validated; импорт javax.validation.constraints.email; import java.ut.date; Синтаксис класс* Шаг 1: Добавьте параметры введения значения аннотации в атрибутах* Шаг 2: Добавьте класс, измененный с помощью аннотации значения в пружинный контейнер IOC; * Шаг 3: Добавьте аннотацию проверки данных, чтобы проверить, поддерживается ли проверка данных; * * ПРИМЕЧАНИЕ. * 2. Поскольку это добавить аннотации проверки почтовых ящиков на iPhone, вы все равно можете пройти тест. * 3. Сложная структура данных не поддерживается, и ошибка подсказки такая же, как первая: nallogalargumentException: не может разрешить заполнителя «itdragon.abilities 'in value" $ {itdragon.ability} " */@component@validatedpublic class valuestent {@value (" $ {itdragon.nick-name} nickname; @Value ("$ {itdragon.email}") частная строка Электронная почта; @Email @Value ("$ {itdragon.iphone}") // Производство успешного, а проверка данных не поддерживается частной строкой iPhone; // @Value ("$ {itDragon.eAtredDate}") // Ошибка // ошибки анализа, не поддерживают свободные соответствующие свойства и должны быть строго последовательными частной датой, созданной; // Мощная сторона аннотации значения: поддерживает выражение Spel @Value ("#{(1+2-3)/4*5}") // Арифметическая операция частной строки; @Value ("#{1> 2 || 2 <= 3}") // Реляционная операция частного логического сравнения; @Value ("#{SystemProperties ['java.version']}") // Системная конфигурация: OS.Name Private String SystemPerties; @Value ("#{t (java.lang.math) .abs (-18)}") // выражение частной строки mapexpression; // Опустите Getter, Setter, ToString Methods}4) Сводка значения файла конфигурации
1. Конфигурация аннотации аннотации поддержки пакетной инъекции, в то время как аннотации стоимости подходят для отдельной инъекции;
2. ConfigurationProperties аннотации поддерживают проверку данных, в то время как аннотации значения не;
3. Конфигурация аннотации Annotations поддерживают свободные соответствующие свойства, в то время как аннотации стоимости должны строго соответствовать свойствам;
4. ConfigurationProperties не поддерживает мощные выражения SPEL, но значение поддерживает их;
4. Заполнители файла конфигурации
Заполнители и случайные числа относительно просты, поэтому я буду публиковать код здесь напрямую. Что следует отметить:
1. Стоимость заполнителя должна быть полным путем
2. Установите значение по умолчанию заполнителя, после толстой кишки не должно быть места
RAN: # Префикс здесь не может быть случайным, ran-value: $ {random.value} ran-int: $ {randm.int} ran-long: $ {random.long} ran-int-num: $ {random.int (10)} ran-int-range: $ {random.int [10,20] ran-place: Зал. Ключ - полный путь} Import org.springframework.boot.context.properties.configurationProperties; Import org.springframework.stereotype.component;/*** Случайное число и класс синтаксиса заполнителя*/@component@configurationproperties (prefix = "ran") public class randomentity {private String ranvalue; // случайным образом генерировать строку частного целого числа Ranint; // случайным образом генерировать целочисленное частное длинное ранлонг; // случайным образом генерировать длительное целое число частных целых чисел Ranintnum; // Случайно генерировать целочисленную частную частную личность в указанном диапазоне integer ranintrange; // случайным образом генерировать целочисленную личную строку Ranplace Holder; // Placeholder // Опустить Getter, Setter, Tostring Method e} Тестный код: @runwith (springrunner.class) @springboottestpublic class class springbootymlapcrication @@awpriveStrietire @AwrIningFOutStestPublic Class userInfo; @Autowired private yamlentity yamlentity; @Autowired Private ConfigurationPertiesEntity ConfigurationSpertiesEntity; @Autowired частная стоимость ценности; @Autowired частная случайность случайности; @Test public void contextloads () {// system.out.println ("yaml grammar:" + yamlentity); // system.out.println ("userInfo:" + userInfo); // system.out.println ("configurationProperties Grammarm:" + configurationPropertyPertyTridety); //syStory. + значение); System.out.println ("Случайная грамматика:" + случайность); }}5. Резюме
1. Spring Boot поддерживает файлы конфигурации в двух форматах, среди которых структура данных YAML более четкая, чем свойства.
2. Yaml - это язык, специально используемый для написания файлов конфигурации, который очень краткий и мощный.
3. Yaml имеет строгие требования на пространствах и не может быть заменен ключом TAB.
4. Yaml определяет уровень по степени космического отступления, с пробелами, следуя толстой кишкой и пробелами, за короткой горизонтальной линией.
5. Конфигурационные аннотации подходят для пакетного впрыскивания свойств в файлах конфигурации, а для получения элемента в файле конфигурации подходит аннотации значений.
6. ConfigurationProperties аннотации поддерживают контрольную сумму данных для получения сложных данных, а аннотации значения поддерживают выражения SPEL.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.