Spring

Spring Boot-운영 체제에 따라 자동으로 프로필 활성화

기록만이살길 2021. 3. 17. 05:03
반응형

Spring Boot-운영 체제에 따라 자동으로 프로필 활성화

1. 질문(문제점):

특정 운영 체제에 특정한 스프링 프로필이 있다고 가정 해 보겠습니다.

spring:
  profiles: mac
  cloud:
    zookeeper:
      discovery:
        preferIpAddress: false
        instanceHost: docker.for.mac.localhost

현재 운영 체제를 기반으로 스프링 프로파일을 자동으로 활성화하는 방법이 있습니까?

따라서 제 경우에는 위의 프로필이 Darwin OS에있는 경우 자동으로 활성화되기를 원합니다.

시스템 속성으로 할 수있는 방법이 있을까요? 이 경우 "Darwin"이 포함 된 mac프로필을 활성화 하고 싶습니다 os.name.

어떤 아이디어?

2. 해결방안:

OS 유형을 결정할 수있는 환경 변수가 있으면 프로그래밍 방식으로 수행 할 수 있습니다.

WebApplicationInitializer 인터페이스를 통해 프로그래밍 방식으로

웹 응용 프로그램에서 WebApplicationInitializer를 사용하여 ServletContext를 프로그래밍 방식으로 구성 할 수 있습니다.

또한 프로그래밍 방식으로 활성 프로필을 설정할 수있는 매우 편리한 위치입니다.

@Configuration
public class MyWebApplicationInitializer implements WebApplicationInitializer {

@Override
public void onStartup(ServletContext servletContext) throws ServletException {

   if (System.getProperty("os.name").contains("darwin")) {
  servletContext.setInitParameter("spring.profiles.active", "mac");
     }
    
  }
}

응용 프로그램에서 하드 코딩하거나 구성 클래스를 생성하지 않으려면 OS를 기반으로 환경 변수를 설정하는 것이 좋습니다.

SPRING_PROFILES_ACTIVE=mac

일반적인 Spring 방식으로 spring.profiles.active Environment 속성을 사용하여 활성화되는 프로필을 지정할 수 있습니다.

65691169
반응형