Spring Boot
2026-02-26 16:29 Diff

Spring Boot работает сразу после установки без какого-либо конфигурирования — для старта этого достаточно. Но со временем появляется все больше задач, в которых нужно менять поведение фреймворка или дополнительных библиотек.

В этом уроке мы разберем основные способы конфигурации фреймворка и ключевые опции, о которых полезно знать.

В конфигурацию фреймворка может входить:

  • Включение цветного вывода логов
  • Настройки сервера — порта или адреса, на котором сервер должен работать
  • Уровни логирования для разных компонентов фреймворка
  • Настройки взаимодействия с базой данных
  • Конфигурация библиотек

Конфигурационный файл

Основная конфигурация Spring Boot хранится в файле application.yml, расположенном в директории src/main/resources. По умолчанию этого файла нет. Его нужно создать в тот момент, когда что-то требует конфигурации:

Сейчас это основной, но не единственный способ настройки. До сих пор во многих статьях и документации можно встретить подход, основанный на файлах properties. Сам файл называется application.properties. Его располагают в директории src/main/resources:

Примеры выше содержат одинаковый набор опций. В последнем примере все уровни схлопнуты в одну строчку, где каждый уровень разделен точкой. Эту связь важно понимать, потому что в курсе вы будете видеть примеры в одном формате, а в вашем проекте — использовать другой формат.

Стандартные опции

Какие возможности по конфигурированию Spring Boot у нас есть? Обычно об этом узнают из статей или документации. Опций очень много, поэтому для удобства они сгруппированы по темам. Обратите внимание, что описание свойств сделано в формате properties — так удобнее.

Вот некоторые опции, которые стоит установить сразу:

Еще полезно настроить уровни логирования и некоторые другие опции. В изучении Spring Boot мы советуем ориентироваться на наши практические задания — в них выставлены важные конфигурационные параметры, которые упрощают работу с фреймворком. Со временем вы сами попробуете многие опции, в том числе связанные с уровнем логирования разных пакетов.

Нестандартные опции

Конфигурация нужна не только для самого Spring Boot — ее можно использовать и для собственных нужд. Этим активно пользуются сторонние библиотеки. Обычно в их документации рекомендуется размещать опции в файлах по названию библиотек: src/main/resources/name.properties.

Spring Boot автоматически подхватывает эти файлы. Все опции можно хранить в application.yml, но сначала их нужно правильно перенести. Обсудим, как работает перенос. Если библиотека предлагает хранить опции в файле name.properties, то в файле application.yml эти опции нужно расположить внутри ключа spring.

Для примера рассмотрим опции библиотеки instancio, которая используется в наших тестах:

Еще можно добавлять свои опции. Обычно они хранятся на верхнем уровне:

Структура самих опций может быть любой. Тут действуем по задаче.

Использование опций

Любые опции можно использовать в коде напрямую, в том числе:

  • Опции, которые вы добавили сами
  • Опции, определенные Spring Boot
  • Опции, определенные сторонними библиотеками

Во всех трех случаях подход не меняется. Ниже мы рассмотрим два способа их использования.

Аннотация @Value

Самый простой способ использовать опции — это аннотация @Value. Она подставляет значение в поле нужного класса — например, контроллера:

Объект с конфигурацией

Для примера представим, что опций много, и они нужны в разных местах. В таком случае подход с @Value неудобен — возникнет дублирование. Нам придется постоянно указывать полные пути в разных местах приложения и исправлять их вручную, если они поменяются.

Чтобы было удобнее, можно создать класс, объект которого Spring Boot автоматически заполнит данными из конфигурационного файла.

Предположим, что мы будем работать с пользователем по умолчанию. Для этого создадим конфигурацию, в которую поместим имя и возраст пользователя:

Чтобы получить доступ к этим опциям в коде, создадим класс, помеченный несколькими аннотациями:

Здесь мы видим три вида аннотаций:

  • Аннотации, которые генерируют геттеры и сеттеры, делая работу удобнее
  • Аннотация @Component, которая указывает, что Spring Boot должен воспринимать этот класс как часть системы
  • Аннотация @ConfigurationProperties, которая указывает, что этот класс отвечает за работу со свойствами под ключом user

Чтобы использовать этот класс, в любом другом классе создадим свойство, куда Spring Boot передает объект класса DefaultUserProperties, заполненный опциями. Дальше его можно использовать в обычном порядке: