제 의도는 스프링 부트 응용 프로그램에 개발 및 프로덕션 용 프로파일 두 개를 갖는 것입니다. 개발 프로필은 프로덕션 프로필의 일부 변수 (예 : 클라우드의 데이터베이스 대신 메모리 내장 데이터베이스)를 무시하기위한 것입니다. 앞으로 프로덕션 프로파일에 몇 가지 변경 사항이 적용될 것으로 예상되므로 개발 프로파일에서 변수를 복제하는 것이 해결책이 아닌 것 같습니다.스프링 "spring.profiles.include"가 대체됩니다.
그럼 spring.profiles.include
은 참조 된 프로필의 속성 만 추가하기로되어 있지만 읽은 프로필의 속성은 추가 한 것으로 간주합니다. 따라서, 별도의 YAML 파일에 두 개의 프로파일 foo는 바을 갖는 경우 :
응용 프로그램 foo.yaml :
myproperty: 44
응용 프로그램 bar.yaml :
spring:
profiles:
include: foo
active: bar,foo
myproperty: 55
그리고 -Dspring.profiles.active=bar
변수를 설정 IDE 일 때 myproperty
의 런타임 값은 44입니다. 즉, bar
은 foo
으로 덮어 쓰여졌습니다.이 속성은 속성 만 추가하고 덮어 쓰지 않아야합니다. 응용 프로그램을 시작할 때 내가 얻을 :
제안 내가 다른 질문에,이 answer에 의해다음 프로파일이 활성 : foo는, 바
application-bar.yaml
-
spring.profiles.active=bar
을 추가
하지만 효과가 없습니다 - 속성이있을 때와 없을 때 차이가 없습니다 (또한 쉼표로 구분 된 값 대신 대시 목록을 사용하여 시도했습니다).
제 질문은 작동하는 방법입니다 (그러면 스프링 참조가 오도 된 것입니까?). 그렇다면 해결책이 있습니까?
link을 github의 응용 프로그램 소스 코드에 추가하십시오.
고마워, 내 생각에 충분히 좋다고 생각해. 여전히 개발자가 사용자 정의 속성 파일을 덮어 쓸 수있게 만들지 않아도되므로 추가 파일을 만들 수 있습니다 (결국에는 application.yaml, application-foo.yaml 및 application-bar.yaml이 있습니다). 그러나 가능한 한 그것의 벌금 요구 사항을 충족. –