저는 응용 프로그램을 시작하기 위해 많은 VM 인수가 전달되는 스프링 부트 프로젝트, 즉 cert 위치, 특정 프로파일 유형 (dev, qa, prod 등).
default.yml 파일에서 모든 구성을 이동하려고합니다. default.yml 설정
문제 설명
속성은 스프링 컨텍스트에만 즉 org.springframework.core.env.Environment의 환경 인터페이스에 액세스하고 속성은 기본적에 의해 자동/시스템 속성으로 설정되어 있지 않습니다 .
시스템의 속성을 ServletContextListenercontextInitialized의 메서드로 설정하고 있습니다.
하지만 명시 적으로 모든 속성을 이름으로 환경을 사용하여 불러오고 싶지 않습니다 .getProperty (key), 오히려 봄의 컨텍스트에서 사용할 수있는 모든 속성을 루프해야/루프를 시스템/환경 변수에 설정하지 않았 으면합니다.
예상 솔루션
listner 메소드 내부에서 default.yml 파일에 정의 된 모든 속성을 이름으로 속성에 액세스하지 않고 시스템 속성으로 설정할 수있는 방법을 찾고 있습니다..yml 파일 안의 모든 스프링 부팅 속성을 시스템 속성으로 설정하십시오.
다음은 현재 env/default.yml에서 추출한 활성 프로파일을 시스템 특성으로 설정하는 방법입니다. 나는 활성 프로파일을 얻거나 yml에서 어떤 속성을 얻고 싶지 않지만, .yml 안에있는 모든 속성을 시스템에 자동으로 설정하고 싶습니다.
Optional.ofNullable(springEnv.getActiveProfiles())
.ifPresent(activeProfiles -> Stream.of(activeProfiles).findFirst().ifPresent(activeProfile -> {
String currentProfile = System.getProperty("spring.profiles.active");
currentProfile = StringUtils.isBlank(currentProfile) ? activeProfile : currentProfile;
System.setProperty("spring.profiles.active", currentProfile);
}));
안녕 Meisch에 대한 감사 작업 때. 나는 비슷한 일을 끝냈다 :) –