Настройка профилей в приложении Spring Boot на основе системных свойств - PullRequest
0 голосов
/ 26 февраля 2020

Я бы хотел установить активный профиль для Spring на основе переменной среды. Для этого я написал следующий код:

@Configuration
public class SpringBootApplicationInitializer
        implements ServletContextInitializer {

    @Override
    public void onStartup(ServletContext servletContext) {

        String platform = System.getProperty("platform");

        if ("prod".equals(platform)) {
            servletContext.setInitParameter("spring.profiles.active",
                                            "prod");
        } else if ("stag".equals(platform)) {
            servletContext.setInitParameter("spring.profiles.active",
                                            "stag");
        } else {
            servletContext.setInitParameter("spring.profiles.active",
                                            "dev");
        }
    }
}

Этот код выполняется, однако ни один профиль не настроен при записи Spring: INFO - Нет активного профиля, установленного по умолчанию, по умолчанию: по умолчанию

Как мне добиться того, чего я хочу?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Как мне добиться того, чего я хочу?

Вы можете просто установить нужный профиль в переменной окружения SPRING_PROFILES_ACTIVE.


Что если я не хочу устанавливать эту переменную для среды dev? Spring тогда не подберет активный профиль.

Чтобы ответить на ваш комментарий, существует количество способов для настройки приложений Spring Boot. Если вы не используете эту переменную среды для разработки, вам следует знать, что вы все еще можете использовать свойства или YAML-файл для разработки.

Имейте в виду, что переменные среды ОС имеют приоритет над приложением свойства (application.properties и варианты YAML). Подробные сведения обо всех источниках свойств конфигурации см. В документации .

.
0 голосов
/ 26 февраля 2020

Попробуйте вот так в application.yml

spring:
  profiles:
    active: ${platform}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...