0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Spring Boot работает сразу после установки без какого-либо конфигурирования - для старта этого достаточно. Но со временем появляется все больше задач, в которых нужно менять поведение фреймворка или дополнительных библиотек.</p>
1
<p>Spring Boot работает сразу после установки без какого-либо конфигурирования - для старта этого достаточно. Но со временем появляется все больше задач, в которых нужно менять поведение фреймворка или дополнительных библиотек.</p>
2
<p>В этом уроке мы разберем основные способы конфигурации фреймворка и ключевые опции, о которых полезно знать.</p>
2
<p>В этом уроке мы разберем основные способы конфигурации фреймворка и ключевые опции, о которых полезно знать.</p>
3
<p>В конфигурацию фреймворка может входить:</p>
3
<p>В конфигурацию фреймворка может входить:</p>
4
<ul><li>Включение цветного вывода логов</li>
4
<ul><li>Включение цветного вывода логов</li>
5
<li>Настройки сервера - порта или адреса, на котором сервер должен работать</li>
5
<li>Настройки сервера - порта или адреса, на котором сервер должен работать</li>
6
<li>Уровни логирования для разных компонентов фреймворка</li>
6
<li>Уровни логирования для разных компонентов фреймворка</li>
7
<li>Настройки взаимодействия с базой данных</li>
7
<li>Настройки взаимодействия с базой данных</li>
8
<li>Конфигурация библиотек</li>
8
<li>Конфигурация библиотек</li>
9
</ul><h2>Конфигурационный файл</h2>
9
</ul><h2>Конфигурационный файл</h2>
10
<p>Основная конфигурация Spring Boot хранится в файле<em>application.yml</em>, расположенном в директории<em>src/main/resources</em>. По умолчанию этого файла нет. Его нужно создать в тот момент, когда что-то требует конфигурации:</p>
10
<p>Основная конфигурация Spring Boot хранится в файле<em>application.yml</em>, расположенном в директории<em>src/main/resources</em>. По умолчанию этого файла нет. Его нужно создать в тот момент, когда что-то требует конфигурации:</p>
11
<p>Сейчас это основной, но не единственный способ настройки. До сих пор во многих статьях и документации можно встретить подход, основанный на файлах<em>properties</em>. Сам файл называется<em>application.properties</em>. Его располагают в директории<em>src/main/resources</em>:</p>
11
<p>Сейчас это основной, но не единственный способ настройки. До сих пор во многих статьях и документации можно встретить подход, основанный на файлах<em>properties</em>. Сам файл называется<em>application.properties</em>. Его располагают в директории<em>src/main/resources</em>:</p>
12
<p>Примеры выше содержат одинаковый набор опций. В последнем примере все уровни схлопнуты в одну строчку, где каждый уровень разделен точкой. Эту связь важно понимать, потому что в курсе вы будете видеть примеры в одном формате, а в вашем проекте - использовать другой формат.</p>
12
<p>Примеры выше содержат одинаковый набор опций. В последнем примере все уровни схлопнуты в одну строчку, где каждый уровень разделен точкой. Эту связь важно понимать, потому что в курсе вы будете видеть примеры в одном формате, а в вашем проекте - использовать другой формат.</p>
13
<h2>Стандартные опции</h2>
13
<h2>Стандартные опции</h2>
14
<p>Какие возможности по конфигурированию Spring Boot у нас есть? Обычно об этом узнают из статей или<a>документации</a>. Опций очень много, поэтому для удобства они сгруппированы по темам. Обратите внимание, что описание свойств сделано в формате<em>properties</em>- так удобнее.</p>
14
<p>Какие возможности по конфигурированию Spring Boot у нас есть? Обычно об этом узнают из статей или<a>документации</a>. Опций очень много, поэтому для удобства они сгруппированы по темам. Обратите внимание, что описание свойств сделано в формате<em>properties</em>- так удобнее.</p>
15
<p>Вот некоторые опции, которые стоит установить сразу:</p>
15
<p>Вот некоторые опции, которые стоит установить сразу:</p>
16
<p>Еще полезно настроить уровни логирования и некоторые другие опции. В изучении Spring Boot мы советуем ориентироваться на наши практические задания - в них выставлены важные конфигурационные параметры, которые упрощают работу с фреймворком. Со временем вы сами попробуете многие опции, в том числе связанные с уровнем логирования разных пакетов.</p>
16
<p>Еще полезно настроить уровни логирования и некоторые другие опции. В изучении Spring Boot мы советуем ориентироваться на наши практические задания - в них выставлены важные конфигурационные параметры, которые упрощают работу с фреймворком. Со временем вы сами попробуете многие опции, в том числе связанные с уровнем логирования разных пакетов.</p>
17
<h2>Нестандартные опции</h2>
17
<h2>Нестандартные опции</h2>
18
<p>Конфигурация нужна не только для самого Spring Boot - ее можно использовать и для собственных нужд. Этим активно пользуются сторонние библиотеки. Обычно в их документации рекомендуется размещать опции в файлах по названию библиотек:<em>src/main/resources/name.properties</em>.</p>
18
<p>Конфигурация нужна не только для самого Spring Boot - ее можно использовать и для собственных нужд. Этим активно пользуются сторонние библиотеки. Обычно в их документации рекомендуется размещать опции в файлах по названию библиотек:<em>src/main/resources/name.properties</em>.</p>
19
<p>Spring Boot автоматически подхватывает эти файлы. Все опции можно хранить в<em>application.yml</em>, но сначала их нужно правильно перенести. Обсудим, как работает перенос. Если библиотека предлагает хранить опции в файле<em>name.properties</em>, то в файле<em>application.yml</em>эти опции нужно расположить внутри ключа<em>spring</em>.</p>
19
<p>Spring Boot автоматически подхватывает эти файлы. Все опции можно хранить в<em>application.yml</em>, но сначала их нужно правильно перенести. Обсудим, как работает перенос. Если библиотека предлагает хранить опции в файле<em>name.properties</em>, то в файле<em>application.yml</em>эти опции нужно расположить внутри ключа<em>spring</em>.</p>
20
<p>Для примера рассмотрим опции библиотеки<em>instancio</em>, которая используется в наших тестах:</p>
20
<p>Для примера рассмотрим опции библиотеки<em>instancio</em>, которая используется в наших тестах:</p>
21
<p>Еще можно добавлять свои опции. Обычно они хранятся на верхнем уровне:</p>
21
<p>Еще можно добавлять свои опции. Обычно они хранятся на верхнем уровне:</p>
22
<p>Структура самих опций может быть любой. Тут действуем по задаче.</p>
22
<p>Структура самих опций может быть любой. Тут действуем по задаче.</p>
23
<h2>Использование опций</h2>
23
<h2>Использование опций</h2>
24
<p>Любые опции можно использовать в коде напрямую, в том числе:</p>
24
<p>Любые опции можно использовать в коде напрямую, в том числе:</p>
25
<ul><li>Опции, которые вы добавили сами</li>
25
<ul><li>Опции, которые вы добавили сами</li>
26
<li>Опции, определенные Spring Boot</li>
26
<li>Опции, определенные Spring Boot</li>
27
<li>Опции, определенные сторонними библиотеками</li>
27
<li>Опции, определенные сторонними библиотеками</li>
28
</ul><p>Во всех трех случаях подход не меняется. Ниже мы рассмотрим два способа их использования.</p>
28
</ul><p>Во всех трех случаях подход не меняется. Ниже мы рассмотрим два способа их использования.</p>
29
<h3>Аннотация @Value</h3>
29
<h3>Аннотация @Value</h3>
30
<p>Самый простой способ использовать опции - это аннотация @Value. Она подставляет значение в поле нужного класса - например, контроллера:</p>
30
<p>Самый простой способ использовать опции - это аннотация @Value. Она подставляет значение в поле нужного класса - например, контроллера:</p>
31
<h3>Объект с конфигурацией</h3>
31
<h3>Объект с конфигурацией</h3>
32
<p>Для примера представим, что опций много, и они нужны в разных местах. В таком случае подход с @Value неудобен - возникнет дублирование. Нам придется постоянно указывать полные пути в разных местах приложения и исправлять их вручную, если они поменяются.</p>
32
<p>Для примера представим, что опций много, и они нужны в разных местах. В таком случае подход с @Value неудобен - возникнет дублирование. Нам придется постоянно указывать полные пути в разных местах приложения и исправлять их вручную, если они поменяются.</p>
33
<p>Чтобы было удобнее, можно создать класс, объект которого Spring Boot автоматически заполнит данными из конфигурационного файла.</p>
33
<p>Чтобы было удобнее, можно создать класс, объект которого Spring Boot автоматически заполнит данными из конфигурационного файла.</p>
34
<p>Предположим, что мы будем работать с пользователем по умолчанию. Для этого создадим конфигурацию, в которую поместим имя и возраст пользователя:</p>
34
<p>Предположим, что мы будем работать с пользователем по умолчанию. Для этого создадим конфигурацию, в которую поместим имя и возраст пользователя:</p>
35
<p>Чтобы получить доступ к этим опциям в коде, создадим класс, помеченный несколькими аннотациями:</p>
35
<p>Чтобы получить доступ к этим опциям в коде, создадим класс, помеченный несколькими аннотациями:</p>
36
<p>Здесь мы видим три вида аннотаций:</p>
36
<p>Здесь мы видим три вида аннотаций:</p>
37
<ul><li>Аннотации, которые генерируют геттеры и сеттеры, делая работу удобнее</li>
37
<ul><li>Аннотации, которые генерируют геттеры и сеттеры, делая работу удобнее</li>
38
<li>Аннотация @Component, которая указывает, что Spring Boot должен воспринимать этот класс как часть системы</li>
38
<li>Аннотация @Component, которая указывает, что Spring Boot должен воспринимать этот класс как часть системы</li>
39
<li>Аннотация @ConfigurationProperties, которая указывает, что этот класс отвечает за работу со свойствами под ключом<em>user</em></li>
39
<li>Аннотация @ConfigurationProperties, которая указывает, что этот класс отвечает за работу со свойствами под ключом<em>user</em></li>
40
</ul><p>Чтобы использовать этот класс, в любом другом классе создадим свойство, куда Spring Boot передает объект класса DefaultUserProperties, заполненный опциями. Дальше его можно использовать в обычном порядке:</p>
40
</ul><p>Чтобы использовать этот класс, в любом другом классе создадим свойство, куда Spring Boot передает объект класса DefaultUserProperties, заполненный опциями. Дальше его можно использовать в обычном порядке:</p>
41
41