Интервьюер: Что такое YAML? Какое это имеет отношение к Spring Boot?

Spring Boot задняя часть

Источник: blog.csdn.net/chenlixiao007.

1. Что такое YAML

YAML — это рекурсивная аббревиатура от «YAML — это не язык разметки» (YAML — это не язык разметки). YAML на самом деле означает: «Еще один язык разметки» (все еще язык разметки). Основная сила этой речи в том, что она ориентирована на данные, а не на язык разметки, такой как xml, который использует много разметки.

YAML — это легко читаемый и простой для понимания формат для выражения сериализации данных. Его синтаксис похож на другие языки высокого уровня, и он может просто выражать формы данных, такие как списки (массивы), хэш-таблицы и скаляры. Он использует отступы пробелов и большое количество функций, зависящих от внешнего вида, что делает его идеальным для выражения или редактирования структур данных, различных файлов конфигурации и многого другого.

Суффикс файла конфигурации YAML — .yml, например файл конфигурации application.yml, используемый в проекте Springboot.

2. Базовая грамматика

  • YAML использует печатные символы Unicode, либо UTF-8, либо UTF-16.
  • Структура данных представлена ​​в виде пар ключ-значение, а именно имя ключа: значение, обратите внимание, что после двоеточия есть пробел.
  • Каждый член списка (массива) представлен в одной строке и начинается с тире + пробел (-). Или используйте квадратные скобки ([]) и разделяйте элементы запятой+пробелом (, ).
  • Каждый член хэш-таблицы разделяет ключ и содержимое двоеточием + пробел (:). Или используйте фигурные скобки ({}) и разделите их запятой+пробелом (,).
  • Строковые значения обычно не заключаются в кавычки, но могут использоваться при необходимости.При использовании двойных кавычек для представления строк специальные символы (например, \n) в строке будут экранированы. Специальные символы в строках не экранируются при использовании одинарных кавычек.
  • с учетом регистра 0d9f12e0ed43f02a97c0941c5d325d989c6af5fb0276dc7&scene=21#wechat_redirect)
  • Используйте отступы для обозначения иерархических отношений, отступы не позволяют вкладки, разрешены только пробелы, поскольку длина вкладок может быть разной в разных системах.
  • Количество пробелов с отступом может быть произвольным, если элементы одного уровня выровнены по левому краю.
  • В пределах одного файла можно использовать три последовательных дефиса (—), чтобы различать несколько файлов. Необязательно, три последовательные точки (…) используются для обозначения конца файла.
  • '#' означает комментарий, который может появиться в любом месте строки, однострочный комментарий
  • Когда используются запятые и двоеточия, за ними должен следовать пробел, поэтому вы можете свободно добавлять разделители в строки или числа (например: 5 280 илиwww.wikipedia.org) без кавычек.

3. Тип данных

  • скаляры: одиночные, неделимые значения
  • Объект: набор пар ключ-значение, также известный как сопоставление/хэши/словарь.
  • Массив: упорядоченный набор значений, также известный как последовательность/список.

скаляр

Скаляр — это самый простой тип данных, неделимое значение, они обычно используются для представления одной переменной, есть следующие семь:

  • [нить
  • [логическое значение]
  • [целое число]
  • [плавать]
  • [Null]
  • [время]
  • [Дата]
# 字符串 string.value: Hello!我是陈皮! 
# 布尔值,true或false boolean.value: true boolean.value1: false 
# 整数 int.value: 10 int.value1: 0b1010_0111_0100_1010_1110 
# 二进制 # 浮点数 float.value: 3.14159 float.value1: 314159e-5 
# 科学计数法 # Null,~代表null null.value: ~ 
# 时间,时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区 datetime.value: !!timestamp 2021-04-13T10:31:00+08:00 
# 日期,日期必须使用ISO 8601格式,即yyyy-MM-dd date.value: !!timestamp 2021-04-13

Таким образом, мы можем ввести его в программу следующим образом:

@RestController @RequestMapping("demo") public class PropConfig {     @Value("${string.value}")     private String stringValue;     @Value("${boolean.value}")     private boolean booleanValue;     @Value("${boolean.value1}")     private boolean booleanValue1;     @Value("${int.value}")     private int intValue;     @Value("${int.value1}")     private int intValue1;     @Value("${float.value}")     private float floatValue;     @Value("${float.value1}")     private float floatValue1;     @Value("${null.value}")     private String nullValue;     @Value("${datetime.value}")     private Date datetimeValue;     @Value("${date.value}")     private Date datevalue; }

Основы Spring Boot не будут представлены, но рекомендуется это практическое руководство:GitHub.com/стеки Java/…

объект

Мы знаем, что одна переменная может быть парой ключ-значение, используя структуру двоеточия для представления ключ: значение, обратите внимание на добавление пробела после двоеточия. Объект может быть представлен с помощью пар ключ-значение на уровне отступа следующим образом:

person:
  name: 陈皮
  age: 18
  man: true

Затем присвойте эти свойства объекту Person в программе.Обратите внимание, что классу Person необходимо добавить методы get/set, иначе свойства не смогут правильно получить значение файла конфигурации. Используя @ConfigurationProperties для внедрения объектов, @value плохо разрешает сложные объекты.

@Configuration
@ConfigurationProperties(prefix = "my.person")
@Getter
@Setter
public class Person {
    private String name;
    private int age;
    private boolean man;
}

Конечно, форма ключа: {ключ1: значение1, ключ2: значение2, ...} также может использоваться следующим образом:

person: {name: 陈皮, age: 18, man: true}

множество

Каждый элемент массива может состоять из строки, начинающейся с короткой черты и пробела - , как в адресном поле следующим образом:Заметки об исследовании Spring BootПоделиться с тобой.

person:
  name: 陈皮
  age: 18
  man: true
  address:
    - 深圳
    - 北京
    - 广州

Вы также можете использовать квадратные скобки для встроенного отображения, как показано ниже:

person:
  name: 陈皮
  age: 18
  man: true
  address: [深圳, 北京, 广州]

Вводится в код следующим образом:

@Configuration
@ConfigurationProperties(prefix = "person")
@Getter
@Setter
@ToString
public class Person {
    private String name;
    private int age;
    private boolean man;
    private List<String> address;
}

Если элемент поля массива также является массивом, можно использовать вложенную форму следующим образом:

person:
  name: 陈皮
  age: 18
  man: true
  address: [深圳, 北京, 广州]
  twoArr:
    -
      - 2
      - 3
      - 1
    -
      - 10
      - 12
      - 30
@Configuration
@ConfigurationProperties(prefix = "person")
@Getter
@Setter
@ToString
public class Person {
    private String name;
    private int age;
    private boolean man;java
    private List<String> address;
    private List<List<Integer>> twoArr;
}

Если элемент массива является объектом, используются следующие две формы:

childs:
  -
    name: 小红
    age: 10
  -
    name: 小王
    age: 15
childs: [{name: 小红, age: 10}, {name: 小王, age: 15}]

4. Текстовый блок

Если вы хотите ввести многострочный текстовый блок, вы можете использовать символ |, следя за тем, чтобы между двоеточием : и символом | был пробел. Последние вопросы интервью отсортированы, щелкните апплет библиотеки интервью Java, чтобы просмотреть вопросы онлайн.

person:
  name: |
    Hello Java!!
    I am fine!
    Thanks! GoodBye!

Это имеет тот же эффект, что и добавление двойных кавычек, которые могут экранировать специальные символы:

person:
  name: "Hello Java!!\nI am fine!\nThanks! GoodBye!"

5. Показать указанный тип

Иногда нам нужно явно указать тип определенных значений, мы можем использовать !(восклицательный знак) для явного указания типа. !Одиночный восклицательный знак обычно является настраиваемым типом, !!Двойной восклицательный знак является встроенным типом, например:

# 指定为字符串
string.value: !!str HelloWorld!
# !!timestamp指定为日期时间类型
datetime.value: !!timestamp 2021-04-13T02:31:00+08:00

Встроенные типы следующие:

  • !!int: целочисленный тип
  • !!float: тип с плавающей запятой
  • !!bool: Логический тип
  • !!str: Тип строки
  • !!binary: двоичный тип
  • !!timestamp: тип даты и времени
  • !!null: нулевое значение
  • !!set: тип коллекции
  • !!omap, !!pairs: список ключей или список объектов
  • !!seq: последовательность
  • !!map: тип хеш-таблицы

6. Цитата

Ссылки будут использовать & якоря и символы звездочки, & используется для установки якоря,

xiaohong: &xiaohong
  name: 小红
  age: 20

dept:
  id: D15D8E4F6D68A4E88E
  <<: *xiaohong

Вышеприведенное заканчивается тем, что эквивалентно следующему:

xiaohong:
  name: 小红
  age: 20

dept:
  id: D15D8E4F6D68A4E88E
  name: 小红
  age: 20

Существует также ссылка в файле, которая ссылается на определенную переменную, например:

base.host: https://chenpi.com
add.person.url: ${base.host}/person/add

7. Один файл с несколькими конфигурациями

Несколько разделов документа, то есть несколько конфигураций, могут быть реализованы в одном и том же файле. В файле yml путем разделения нескольких различных конфигураций, какая конфигурация включается в соответствии со значением spring.profiles.active.

#公共配置
spring:
  profiles:
    active: pro # 指定使用哪个文档块


#开发环境配置
spring:
  profiles: dev # profiles属性代表配置的名称
server:
  port: 8080


#生产环境配置
spring:
  profiles: pro
server:
  port: 8081

Рекомендуются два оригинальных проекта Springboot+Vue с полными видеообъяснениями, документацией и исходным кодом:

[VueAdmin] Научит вас разрабатывать систему управления разделением интерфейсов и серверов SpringBoot+Jwt+Vue.

[VueBlog] Полное обучение проекту блога о разделении внешнего и внутреннего интерфейса на основе разработки SpringBoot + Vue.

Если у вас есть какие-либо вопросы, заходите на мой официальный аккаунт【Вопросы и ответы по Java】Спроси меня