스프링 "spring.profiles.include" 오버라이드
저의 의도는 스프링 부트 어플리케이션에서 개발용과 프로덕션용 두 가지 프로파일을 갖는 것입니다.개발 프로파일은 프로덕션 프로파일의 일부 변수(클라우드의 데이터베이스가 아닌 메모리 내 데이터베이스)를 재정의하는 것을 의미합니다.향후 생산 프로파일에 약간의 변화가 있을 것으로 예상되기 때문에 개발 프로파일에 변수를 복제하는 것은 해결책이 될 수 없을 것 같습니다.
그래서 봄 레퍼런스에서 읽었어요spring.profiles.include
이치노
경우에 따라서는 프로파일 고유의 속성을 활성화프로파일에 추가하는 것이 편리할 수 있습니다.그
spring.profiles.include
속성을 사용하여 액티브프로파일을 무조건 추가할 수 있습니다.
하지만 내가 확인한 바로는 오히려 그것을 무시한다.따라서 foo와 bar의 2개의 프로파일이 있는 경우 별도의 yaml 파일에 다음과 같이 입력합니다.
application-foo.displ:
myproperty: 44
application-bar.syslogl:
spring:
profiles:
include: foo
active: bar,foo
myproperty: 55
설정 ★★-Dspring.profiles.active=bar
, IDE 시 값, IDE 실행 시 값myproperty
즉는 44라는 입니다.bar
에 , , , , , , , , , , ,로 됩니다.foo
과 같이 표시됩니다.애플리케이션을 기동하면, 다음과 같이 표시됩니다.
다음 프로파일이 활성화됩니다.foo, bar
는 ㅇㅇㅇㅇㅇㅇㅇㅇ다를 넣었습니다.spring.profiles.active=bar
로로 합니다.application-bar.yaml
이 답변에서 제시된 것처럼 다른 질문에서도 효과가 없습니다.속성이 존재하든 존재하지 않든 차이가 없습니다(쉼표로 구분된 값 대신 대시 목록을 사용해보기도 했습니다).
질문입니다(Spring Reference는 오해의 소지가 있습니다).그렇다면 그에 대한 해결책이 있나요?
github의 응용 프로그램소스 코드에 링크 추가
Spring 액티브프로파일은 약간 다른 방법으로 구현했습니다. 파일인 application.yml
에는 운영 환경과 개발 환경 모두에서 동일한 모든 기본값이 포함되어 있습니다.
에 대해 .이러한 속성은 다음과 같습니다.application-prd.yml
★★★★★★★★★★★★★★★★★」application-dev.yml
각각 다음과 같다.이러한 파일은 추가 속성을 포함하거나 기본 속성 중 일부를 재정의할 수 있습니다.
기동시에, 「」를 .spring.profiles.active
환경변수로 사용됩니다.를 들어 '예'라고 하면,
-Dspring.profiles.active=prd
application-prd.yml
application.yml
또는
-Dspring.profiles.active=dev
application-dev.yml
application.yml
여기 스프링 부트 설명서에 따르면spring.profiles.include
는 다른 프로파일에서 속성을 추가하기 위해 사용됩니다.활성 프로파일에 속성이 없는 경우 다른 프로파일의 속성을 추가합니다. 되고 되는 것이 이깁니다.
경우에 따라서는 프로파일 고유의 속성을 활성화프로파일에 추가하는 것이 편리할 수 있습니다.그
spring.profiles.include
속성을 사용하여 액티브프로파일을 무조건 추가할 수 있습니다.
Spring Boot 2.4에서는 여러 프로파일을 포함하는 메커니즘이 변경되어 새로운 프로파일 그룹 기능을 사용하는 대신spring.profiles.include
프로파일 고유의 문서 내에 있습니다.즉, 새로운 버전의 Spring Boot에서는 설정이 유효하지 않으므로 변경해야 합니다.
단, 프로파일 그룹에는 그다지 적합하지 않은 것 같습니다.두 프로파일의 결합은 기본값보다 우선하기 때문입니다.따라서 공유에 공통 속성 및 기본 속성을 넣는 다른 답변에서 제시된 접근 방식을 사용할 것을 권장합니다.application.yaml
프로파일 고유의 문서에 환경 고유의 값과 덮어쓰기만 포함합니다.
application.syslogl
spring:
myproperty: 44 # Default value
application-bar.syslogl
spring:
myproperty: 55 # Override default
Spring Boot은 여러 문서 파일을 지원하므로 이러한 파일을 하나의 파일로 결합할 수 있습니다.application.yaml
다음 중 하나:
spring:
myproperty: 44 # Default value
---
spring.config.activate.on-profile: bar # These configs apply to the bar profile
spring:
myproperty: 55 # Override default
관련 2.4 변경 사항
더 .spring.profiles.include
Spring Boot 2.4 현재 프로파일 고유의 문서 내에서 사용할 수 있습니다(레거시 모드를 활성화하지 않는 한).spring.config.use-legacy-processing=true
2.4 Spring Boot Config Data Migration Guide (스프링 부트 구성 데이터 이행 가이드)에 따르면:
spring.displaces.displaces 속성은 사용할 수 있지만 프로파일 고유하지 않은 문서에서만 사용할 수 있습니다.
이 접근방식은 프로파일그룹 기능으로 대체되었습니다.이행 가이드에 따르면:
처럼 이제는 더 이상
spring.profiles.include
이 파일은 유효하지 않습니다.이 사용 사례는 매우 일반적이기 때문에 이를 지원하기 위한 다른 방법을 제공하려고 했습니다.Spring Boot 2.4 에서는, 「프로파일 그룹」기능을 사용할 수 있습니다.
이 기능에 대해서는, 「Spring Boot 」레퍼런스 가이드의 「Profile Groups」섹션에 기재되어 있습니다.
프로파일 그룹을 사용하면 관련된 프로파일 그룹의 논리 이름을 정의할 수 있습니다.
들면 '만들다'를 수 요.
production
입니다.proddb
★★★★★★★★★★★★★★★★★」prodmq
프로파일.spring: profiles: group: production: - "proddb" - "prodmq"
이제 응용 프로그램을 시작할 수 있습니다.
--spring.profiles.active=production
production
,proddb
★★★★★★★★★★★★★★★★★」prodmq
한 번에 프로파일링 할 수 있습니다.
이행가이드에서는 다음과 같이 지적하고 있습니다.spring.profile.group
프로파일별 문서에서 속성을 사용할 수 없습니다.
spring.profile.group
프로파일별 문서에서 속성을 사용할 수 없습니다.
할 수 .application-bar.yaml
:
spring.profiles.include: foo,foo-override
myproperty: 33
---
spring.profiles: foo-override
myproperty: 55
순서는 다음과 같습니다.33 in bar
덮어쓰기 됩니다.44 in foo
덮어쓰기 됩니다.55 in foo-override
.
지정:
- ★★★★★
application-default.yml, application-foo.yml, application-bar.yml
myproperty: default
application-default application-default.yml로 설정합니다.myproperty: foo
yml application-foo.yml 서 in inmyproperty: bar
application-bar.yml application-bar.yml의 경우
이 두 가지 프로파일 사용 사례는 의미가 약간 반대인 것 같습니다.
인 경우 「 」 「 」 「 。
-Dspring.profiles.active
, 안 된다spring.profiles.include
- 프로파일 foo 또는 boo가 활성화되면 application-foo.yml(또는 application-bar.yml)의 속성이 application-default.yml의 속성을 추가하거나 덮어씁니다.
- 프로파일 foo, bar가 활성화되면 bar의 속성이 application-foo.yml의 속성 및 application-default.yml의 속성을 추가하거나 덮어씁니다.
::
-Dspring.profiles.active=foo,bar
-> application-bar.yml).myproperty: bar
경우 「」 「 」 「 」
spring.profiles.include
★★★★★★★★★★★★★★★★★)- 을 추가 또는 는 *.yml 을 사용합니다.
spring.profiles.include
:: 만 : 만
application-boo.yml
를 포함합니다.spring.profiles.include=foo
후, 「」의 .application-foo.bar adds/override properties from from application-bar.yml
application-default.yml에서 합니다.application-boo.에 application-boo.yml이 되어 있는 경우) application-boo.yml은 application-boo.yml이다.
spring.profiles.include=default,foo
후, 「」의 .application-foo.yml
application-default.yml
application-bar.yml
myproperty: bar
를 사용하는 것은 추천하지 않습니다.default
와와와spring.profiles.include
두할 수 , 은 직관에 어긋나기 입니다.application-default.yml
이치노- 을 추가 또는 는 *.yml 을 사용합니다.
, 저는 의 팬이 아닙니다.spring.profiles.active
mlyyyyy*.yml 일mlyyy 。시스템 속성(매븐 포함) 또는 env 변수를 사용하여 프로파일을 활성화하는 것이 좋습니다.IMO를 사용하다
만약 내가 잘못된 길을 가고 있다면, 나에게 알려주십시오.
언급URL : https://stackoverflow.com/questions/47368086/spring-spring-profiles-include-overrides
'programing' 카테고리의 다른 글
레일에서 json을 렌더링하는 가장 빠른 방법은 무엇입니까? (0) | 2023.04.02 |
---|---|
angularjs에서 ng-module을 사용한 애니메이션 사용 방법 (0) | 2023.04.02 |
Reactjs의 미디어 쿼리 구문 (0) | 2023.04.02 |
JSONARray에서 특정 요소를 제거하려면 어떻게 해야 합니까? (0) | 2023.03.28 |
WordPress 웹사이트에서 프런트 엔드에서 wp-admin/ajax.php 페이지에 액세스하면 403 오류가 나타난다. (0) | 2023.03.28 |