특정 운영 체제에 특정한 스프링 프로필이 있다고 가정 해 보겠습니다.
spring:
profiles: mac
cloud:
zookeeper:
discovery:
preferIpAddress: false
instanceHost: docker.for.mac.localhost
현재 운영 체제를 기반으로 스프링 프로파일을 자동으로 활성화하는 방법이 있습니까?
따라서 제 경우에는 위의 프로필이 Darwin OS에있는 경우 자동으로 활성화되기를 원합니다.
시스템 속성으로 할 수있는 방법이 있을까요? 이 경우 "Darwin"이 포함 된 mac
프로필을 활성화 하고 싶습니다 os.name
.
어떤 아이디어?
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 속성을 사용하여 활성화되는 프로필을 지정할 수 있습니다.