HTML Diff
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