Конфигурация приложения

Базовый Spring
≈ 1 мин чтения

Настройки живут вне Java-кода

Порт сервера, адрес внешнего сервиса, размер пула или флаг функции не стоит жёстко зашивать в класс. Spring Boot умеет читать конфигурацию из внешних источников и передавать её приложению при запуске. Самый знакомый вариант — файл application.properties или application.yml.

server.port=8081
app.message=Hello

Те же настройки могут приходить из переменных окружения, аргументов командной строки и других поддерживаемых источников. Благодаря этому один и тот же собранный артефакт можно запускать с разными параметрами без перекомпиляции.

Получение отдельного значения

Для небольшого количества независимых настроек значение можно внедрить прямо в bean:

@Component
class GreetingService {
    private final String message;

    GreetingService(@Value("${app.message}") String message) {
        this.message = message;
    }
}

Spring разрешает выражение ${app.message} из текущего окружения и передаёт значение через конструктор. Когда связанных свойств становится много, удобнее не писать десятки @Value, а собрать их в отдельный типизированный объект. Это будет следующая тема.

Конфигурация и секреты — не одно и то же. Пароли, токены и ключи не стоит хранить в репозитории вместе с обычным application.properties. Их лучше передавать приложению через защищённое внешнее окружение.