Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Профили Java: Корпоративные приложения на Spring Boot

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

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

Среды разработки

Как минимум выделяют две среды разработки:

  • Продакшен (Production). Место, где запускается проект для его реальной работы. Как правило, это происходит в облаках Amazon, Yandex или Google.
  • Девелопмент (Development). Почти всегда локальная машина разработчика. Обычно среда одна, даже если разработчиков больше одного человека.

Кроме указанных, часто, добавляют среду Staging. Это предпродакшен среда, где имитируется окружение, максимально приближенное к продакшену. Эту среду используют для тестирования приложения перед тем как выполнить его деплой на продакшен.

Итого, в типовых ситуациях, мы можем говорить о трех средах, для которых в Spring Boot будут определены три профайла:

  • production
  • development
  • staging

Активация профайла

Активация профайла выполняется двумя основными способами.

  • С помощью переменной окружения SPRING_PROFILES_ACTIVE

    export SPRING_PROFILES_ACTIVE=development
    java -jar myproject.jar
    
  • С помощью аргумента во время запуска приложения

    java -jar myproject.jar --spring.profiles.active=development
    // Или Gradle
    ./gradlew run --args='--spring.profiles.active=development'
    

Формирование профайла

Аннотация @Profile указанная для @Component или @Configuration указывает на то, что эти классы должны использоваться только в определенном окружении:

@Configuration
@Profile("development")
public class DevelopmentConfig {
    // Configuration for the development profile
}

Таким образом можно реализовать подмену как настроек, так и реализацию каких-то классов.

Конфигурационные параметры предпочтительно подменять с помощью файлов, специфичных для своих профилей: application-{profile}.yml расположенных рядом с оригинальным application.yml. Например:

  • application-production.yml
  • application-staging.yml

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


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 21 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»