расширятьНажмите, чтобы прыгнуть~:Сводка по обучению и расширение серии SpringBoot
@[toc]
предисловие
- Рекомендуется установить пакет lombok, чтобы классу сущности не приходилось каждый раз вручную писать методы get, set, tostring и другие. Настоятельно рекомендуется~
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
- После добавления аннотации @Data компилятор автоматически добавит за нас методы get, set и другие, что значительно уменьшит объем нашего кода и выглядит намного удобнее~
1. свойства приложения
- грамматическая структура:
- key=value
-
эффект:
- Измените значение автоматической настройки SpringBoot по умолчанию, потому что SpringBoot автоматически настраивает его для нас внизу;
-
В отличие от традиции:
<server>
<port>8888<port>
</server>
- По сравнению с сейчас: намного проще.
2. приложение.yml
-
Официальная рекомендация: мы используем формат YML, потому что он проще, а функция мощнее.
-
Формат синтаксиса: ключ: значение пространства
- Пробелы не могут быть опущены
- Иерархическая связь управляется отступом, пока столбец данных, выровненный по левому краю, находится на одном уровне.
- Атрибуты и значения чувствительны к регистру
- массив записи yml: разрешены следующие два способа записи~
- yml write object: разрешены следующие два способа записи~
Три, файл конфигурации инъекции yml
3.1, внедрение @Value (старая версия)
- класс сущности
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Data
@Component
public class Person {
@Value("小小丁小小")
private String name;
@Value("24")
private Integer age;
@Value("175")
private String high;
@Value("捕鱼")
private String like;
}
- результат выполнения модульного теста
- недостатки
- Если класс особенно сложный, писать его труднее.
3.2, инъекция мл
- ①Создайте новый класс сущностей и добавьте аннотацию @Data.
import lombok.Data;
@Data
public class Student {
private String name;
private Integer age;
private String high;
private String like;
}
- ② Написать профиль YML:
server:
port: 7777
student:
name: 大大丁大大
age: 23
high: 173
like: 钓鱼
- ③ Добавьте @Component в класс сущности, аннотацию @ConfigurationProperties (префикс = "Студент").
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private String name;
private Integer age;
private String high;
private String like;
}
- 注意点:会爆红,但是不影响程序的执行,我们可以去除这个爆红。点击Open Documentation
Вы также можете нажать здесь ~ Импорт можно добавить здесь, в файле pom.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- Идеальное решение
- ④ Пишите модульные тесты и внедряйте классы сущностей
import com.dyjTest.dyjProject.entity.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DyjProjectApplicationTests {
@Autowired(required = false)
Student student;
@Test
void contextLoads() {
System.out.println(student);
}
}
Результат выполнения следующий:АхИскажено! Решить ТА!Выполнить снова: результат следующийИдеальное решение! !
- Суммировать
В-четвертых, @PropertySource загружает указанный файл конфигурации.
-
@PropertySource:Загрузить указанный файл конфигурации
-
@configurationProperties:По умолчанию значение берется из файла глобальной конфигурации;
-
① Создайте новый файл person.yml
- ②Класс объекта
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Data
@Component
@PropertySource("classpath:person.yml")
public class Person {
@Value("${name}")
private String name;
private Integer age;
private String high;
private String like;
}
- ③ Результат выполнения модульного теста выглядит следующим образом:
5. Заполнители файла конфигурации
- заполнитель для генерации случайных чисел
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
Шесть, приоритет нескольких файлов конфигурации yml
- Если одновременно два конфигурационных файла, properties и yml, если они не конфликтуют, то будут дополнять друг друга, и наоборотВ основном свойства.
- Может быть размещен в следующих четырех позициях
- ①В корневом каталоге
- ②В каталоге config корневого каталога
- ③В каталоге config в каталоге ресурсов
- ④В каталоге ресурсов
- Выполните следующее, чтобы увидеть порядок приоритета
① Одновременное существование: выполнениеФайлы конфигурации в каталоге config корневого каталога
②Удалите предпосылку ①: реализацияконфигурационный файл в корневом каталоге
③Удалите предпосылку ①②: реализацияФайлы конфигурации в каталоге config в каталоге ресурсов
④Удалить предпосылку ①②три: она будет выполненакаталог ресурсовЭто расположение по умолчанию
- Общий порядок: ②>①>③>④
- Файл конфигурации в каталоге config корневого каталога > файл конфигурации в корневом каталоге > файл конфигурации в каталоге config в каталоге ресурсов > каталог ресурсов (расположение по умолчанию)
Седьмое, использование файлов конфигурации с несколькими средами во время разработки.
7.1 Укажите файл конфигурации
- В реальной разработке у нас может быть много наборов сред, таких как среда разработки (dev), среда в градациях серого (pre), онлайн-среда (prod), и нам нужно несколько файлов конфигурации для управления информацией о конфигурации этих сред.
- yml поддерживает конфигурацию с несколькими средами следующим образом:
- В основной конфигурационный файл можно передать: указать в каком конфигурационном файле запускать проект согласно
spring:
profiles:
active: 环境名
- Попробуйте:
- указать разработчика
- указать продукт
Удобен ли yml? Это экономит нам много работы~~
7.2 Как автоматически выбирать файлы конфигурации в реальной разработке
- В реальной работе мы не можем указать файл конфигурации вручную, иначе нам придется указывать его каждый раз, когда мы отправляем пакет, что за хлопоты~
- Давайте объединим вышеуказанный метод с pom.xml, чтобы оптимизировать его, давайте определим, что нам нужно.упакованная среда
- ① Новые варианты упаковки для файлов pom.
<!--打包选择环境-->
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>pre</id>
<properties>
<env>pre</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
Обновите maven, и вы увидите, что наша структура maven изменилась:
- ②Обозначение основного файла конфигурации должно быть заполнителем
spring:
profiles:
active: '@env@'
- ③Выберите указанную среду, чтобы начать проект: идеально соответствует нашим потребностям! ! !
7.3, yml, один файл, несколько конфигураций
- yml также может выполнять несколько конфигураций в одном файле.
- Синтаксис выглядит следующим образом
server:
port: 6666
---
server:
port: 7777
---
server:
port: 8888
- свойства не поддерживает это письмо
Это конец игры о файле конфигурации приложения~
Впереди долгий путь, и я обязательно буду его искать вдоль и поперёк~Если вы думаете, что я блогеры хорошо пишу! Писать нелегко, ставьте лайки, подписывайтесь и комментируйте, чтобы поощрить блоггеров~Пожалуйста, указывайте источник при перепечатке~