JavaRush /Курсы /Модуль 5. Spring /Конфигурация через application.properties и application.y...

Конфигурация через application.properties и application.yml

Модуль 5. Spring
4 уровень , 4 лекция
Открыта

Углубимся в конфигурации. Каждый Spring Boot проект начинается с вопроса: "Где хранить настройки?". Spring Boot отвечает на него просто: используйте application.properties или application.yml. Эти два файла — сродни центру управления полётами для вашего приложения, где каждая строчка может определить его судьбу: от триумфального взлёта до эпичного падения.

Spring Boot ищет эти файлы в src/main/resources — стандартном месте для всех ресурсов проекта. Это логично: конфигурация тоже ресурс, просто особенный - она определяет, как ваше приложение будет себя вести в разных ситуациях. И поверьте, правильная конфигурация может превратить даже самое простое приложение в надёжный корпоративный сервис.

Что настраиваем?

  • Порт сервера: на каком порту должно работать приложение.
  • Базу данных: URL подключения, имя пользователя, пароль и так далее.
  • Профили приложения: разные настройки для среды разработки, тестирования и продакшена.
  • Параметры логирования: уровень логов, формат вывода и так далее.

Разница между application.properties и application.yml

Вы ужн сталкивались с вопросом "что лучше — JSON или XML?", теперь же вас ждут подобного рода баталии между application.properties и application.yml.

application.properties

Это формат "ключ-значение", знакомый и понятный большинству разработчиков. Вот пример:


server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

Преимущества:

  • Простой и лаконичный.
  • Легко читается и редактируется.

Недостатки:

  • Для сложных конфигураций (например, массивов) становится громоздким.
  • Лишён визуальной структуры, что может усложнить восприятие больших файлов.

application.yml

Если properties кажутся вам слишком плоскими, познакомьтесь с YAML (Yes, это рекурсивный акроним: "YAML Ain't Markup Language"). YAML делает конфигурацию более наглядной благодаря отступам и древовидной структуре. Смотрите сами:


server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

Преимущества:

  • Поддерживает вложенные структуры, что делает его более читаемым.
  • Идеален для сложных конфигураций.

Недостатки:

  • Требует аккуратного обращения с отступами (не тот уровень отступа — и привет, ошибки).

На самом деле, выбор между ними определяется вашим вкусом и сложностью проекта. Но для больших приложений YAML часто предпочтительнее.


Управление профилями в Spring Boot

Представьте, что ваше приложение должно вести себя по-разному в разных средах: разработка (dev), тестирование (test), продакшен (prod). Для этого Spring Boot предлагает механизм профилей.

Как настроить профили?

Всё просто: добавьте к своему конфигурационному файлу название профиля. Например:

  • application-dev.properties или application-dev.yml
  • application-prod.properties или application-prod.yml

А в основном файле application.properties или application.yml укажите активный профиль:


spring.profiles.active=dev

Или, если вы фанат YAML:


spring:
  profiles:
    active: dev

Как изменить активный профиль?

Профиль можно также указать через:

  1. Аргументы командной строки:
    
    java -jar myapplication.jar --spring.profiles.active=prod
    
  2. Переменные окружения:
    
    export SPRING_PROFILES_ACTIVE=prod
    

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


Виды параметров конфигурации

Настройка сервера

Здесь всё просто. Хотите изменить порт, на котором работает ваш встроенный сервер? Легко:


server.port=8081

Настройка базы данных

Подключение к базе данных тоже не займет много времени:


spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

Логирование

Чтобы настроить уровень логирования:


logging.level.org.springframework=INFO
logging.level.com.myapp=DEBUG

logging:
  level:
    org.springframework: INFO
    com.myapp: DEBUG

Запомните, хорошее логирование — это как хорошая диаграмма: многое объясняет, но не перегружает деталями.


Преимущества использования YAML

Простота работы со сложными структурами

YAML позволяет задавать массивы и карты прямо в структуре:


myapp:
  features:
    - feature1
    - feature2
    - feature3

В случае properties вам пришлось бы писать что-то вроде этого:


myapp.features[0]=feature1
myapp.features[1]=feature2
myapp.features[2]=feature3

Улучшенная читаемость

YAML с его вложенными структурами (и поддержкой пробелов вместо символов .) читается легче:


server:
  port: 8080
spring:
  datasource:
    username: root
    password: secret

Применение на практике

Давайте сделаем небольшой пример, чтобы закрепить материал. Создадим простое приложение, которое считывает конфигурационные параметры из файла application.yml.

Шаг 1: Создаем application.yml


server:
  port: 8080

app:
  title: "Spring Boot Config Demo"
  description: "Это наш пример приложения с использованием YAML."

author:
  name: "Иван Иванов"
  email: "ivan@example.com"

Шаг 2: Чтение параметров в коде

Spring предоставляет аннотацию @Value, чтобы получать значения из конфигурационного файла. Вот пример:


import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {

    @Value("${app.title}")
    private String appTitle;

    @Value("${app.description}")
    private String appDescription;

    @Value("${author.name}")
    private String authorName;

    @GetMapping("/config")
    public String getAppConfig() {
        return String.format("%s - %s (автор: %s)", appTitle, appDescription, authorName);
    }
}

Теперь, если запустите приложение, вы сможете открыть в браузере http://localhost:8080/config и увидеть результат.


Типичные ошибки при работе с конфигурациями

  1. Ошибка с отступами в YAML. Если файл не парсится, убедитесь, что используете пробелы, а не табуляцию.
  2. Лишние пробелы в application.properties. Символы лишних пробелов у ключей или значений могут приводить к неожиданным проблемам.
  3. Некорректное указание профиля. Если профиль неактивен, его конфигурации не применяются.

На этом этапе у вас уже должен быть полный контроль над миром Spring Boot конфигураций. Всё в ваших руках! Например, вы можете настроить девелоперское окружение, тестовое и продакшен так, чтобы они работали, как часы.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ