.yml 파일에서 속성 자리 표시자를 사용하는 방법
저는 자바와 스프링부트로 일하고 있습니다.를 속성자 다추방궁다금니합법에 ..yml
파일입니다. 명확한 예제를 찾았지만 속성 자리 표시자가 어디에서 인스턴스화되는지 잘 모르겠습니다.시스템 환경 변수, 파일 등에 있습니까?
부트스트랩.yml
spring:
cloud:
config:
username: ${my.stored.files.username}
password: ${my.stored.files.password}
label: ${spring.cloud.find.label}
uri: ${spring.cloud.config.uri}
enabled: false
failFast: true
사용자가 속성 자리 표시자를 사용하고 있지만 사용자가 이를 선언한 위치는 어디입니까?이 .yml은 어디에서 값을 읽습니까?(위와 같은 질문) 연관성을 설명하는 문서가 있습니까?
이 웹 애플리케이션은 "cf push"를 사용하여 클라우드 파운드리로 푸시되며, 이는 구성할 manifest.yml 파일을 자동으로 선택합니다.가능하다면 클라우드 주조 공장의 사례가 좋을 것입니다.
Application.properties 파일 이해/샘플
app.name=MyApp
app.description=${app.name}
사용자가 ${app.name }을(를) 정의했으므로 사용할 수 있습니다.위의 예에 대해 혼동이 있습니다.사용자가 "${my.store"를 받는 방법과 위치.files.vmdk}.그것은 어디에서 정의되고 있습니까?나는 그것이 체계적일 것이라고 생각했습니다.속성 또는 환경 변수.누가 확인해 줄 수 있습니까?
집중적으로 조사한 결과 .yml 파일의 자리 표시자를 사용하면 환경 변수에서 값을 읽을 수 있었습니다.그것은 처음에 제 이론의 일부였지만, 아무도 확인하지 않았습니다.
로컬 환경에 대한 답변
spring:
cloud:
config:
username: ${my.stored.files.username}
password: ${my.stored.files.password}
label: ${spring.cloud.find.label}
uri: ${spring.cloud.config.uri}
enabled: false
failFast: true
*환경 변수에서 *
set key as: my.stored.files.username
set value as: UsernameSample
그리고나서
응용 프로그램을 실행하면 yml이 그렇게 읽힙니다.
config:
username: ${my.stored.files.username}
//gets replaced with UsernameSample
이것은 나의 문제를 해결한 링크입니다.
클라우드 주조 공장용
컵을 만들거나 이러한 변수를 서비스에 수동으로 추가해야 합니다.
몇 가지 연구와 실험을 수행한 후 자리 표시자가 환경 변수와 명령줄 인수가 될 수 있다는 것을 알게 되었습니다.속성 파일에 대한 구문도 YAML 파일에서 작동했습니다.환경 변수는 이미 @Jesse에 의해 설명되었습니다.명령행 인수를 전달할 수 있는 경우:
--my.stored.files.username=UsernameSample
또는--username=UsernameSample
.
my:
stored:
files:
username: ${username:defaultUsername}
저는 이것이 비슷한 문제를 가진 사람에게 도움이 되기를 바랍니다.
SpringApplication은 다음 위치에 있는 application.properties 파일에서 속성을 로드하여 SpringEnvironment에 추가합니다.
- 현재 디렉터리의 /config 하위 디렉터리
- 현재 디렉터리
- 클래스 경로/구성 패키지
- 클래스 경로 루트
목록은 우선 순위에 따라 정렬됩니다(목록의 높은 위치에 정의된 속성이 낮은 위치에 정의된 속성보다 우선함).
'.properties' 대신 YAML(.yml') 파일을 사용할 수도 있습니다.
application.properties를 구성 파일 이름으로 사용하지 않는 경우 spring.config.name 환경 속성을 지정하여 다른 파일 이름으로 전환할 수 있습니다.spring.config.location 환경 속성(디렉토리 위치 또는 파일 경로의 쉼표로 구분된 목록)을 사용하여 명시적 위치를 참조할 수도 있습니다.다음 예는 다른 파일 이름을 지정하는 방법을 보여 줍니다.
$ java -jar myproject.jar --spring.config.name=myproject
다음 예제에서는 두 위치를 지정하는 방법을 보여 줍니다.
$ java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
spring.config.name 및 spring.config.location은 로드해야 할 파일을 결정하는 데 매우 일찍 사용됩니다.이러한 속성은 환경 속성(일반적으로 OS 환경 변수, 시스템 속성 또는 명령줄 인수)으로 정의해야 합니다.
spring.config.location에 파일이 아닌 디렉토리가 포함되어 있는 경우 디렉토리는 /로 끝나야 합니다(그리고 런타임에 프로필별 파일 이름을 포함하여 로드되기 전에 spring.config.name 에서 생성된 이름으로 추가됩니다).spring.config.location에 지정된 파일은 프로파일별 변형을 지원하지 않고 그대로 사용되며 프로파일별 속성에 의해 재정의됩니다.
구성 위치는 역순으로 검색됩니다.기본적으로 구성된 위치는 classpath:/,classpath:/config/,file:/,file:/config/입니다.결과 검색 순서는 다음과 같습니다.
file:./config/
file:./
classpath:/config/
classpath:/
spring.config.location을 사용하여 사용자 지정 구성 위치를 구성하면 기본 위치가 바뀝니다.예를 들어 spring.config.location이 classpath:/custom-config/, file:/custom-config/ 값으로 구성된 경우 검색 순서는 다음과 같습니다.
file:./custom-config/
classpath:custom-config/
또는 spring.config.additional-location을 사용하여 사용자 지정 구성 위치를 구성하는 경우 기본 위치와 함께 사용됩니다.추가 위치는 기본 위치보다 먼저 검색됩니다.예를 들어 classpath:/custom-config/, file:/custom-config/의 추가 위치가 구성된 경우 검색 순서는 다음과 같습니다.
file:./custom-config/
classpath:custom-config/
file:./config/
file:./
classpath:/config/
classpath:/
이 검색 순서를 사용하면 한 구성 파일에서 기본값을 지정한 다음 다른 구성 파일에서 해당 값을 선택적으로 재정의할 수 있습니다.application.properties(또는 spring.config.name 에서 선택한 다른 기본 이름)에서 응용 프로그램의 기본값을 제공할 수 있습니다.그런 다음 사용자 지정 위치 중 하나에 있는 다른 파일을 사용하여 런타임에 이러한 기본값을 재정의할 수 있습니다.
ddsultan의 대답은 저에게 효과가 있습니다. 저 같은 사람이 아이디어에서 자리 표시자 값을 설정해야 할 경우를 대비해서요.실행 환경설정을 편집하고 [선택사항 수정]을 누른 후 "프로그램 선택사항"을 선택한 후 새로 추가된 필드에 플레이스홀더 값(예: "--section=4")을 입력합니다.
.yml 파일의 경우 플레이스 홀더로 {{your key}}를 사용하십시오.
언급URL : https://stackoverflow.com/questions/43148748/how-to-use-property-placeholders-in-yml-file
'programing' 카테고리의 다른 글
이 SQL Server 제약 조건에서 PAD_INDEX의 목적은 무엇입니까? (0) | 2023.07.15 |
---|---|
SQL 서버에 null 값을 삽입하는 방법 (0) | 2023.07.15 |
이미 체크인된 디렉토리의 내용을 무시하시겠습니까? (0) | 2023.07.10 |
mongodb.conf bind_ip = 127.0.0.1은 작동하지 않지만 0.0.0은 작동합니다. (0) | 2023.07.10 |
SQL Server 오류 1222 해결 방법 즉, SQL Server 테이블 잠금 해제 (0) | 2023.07.10 |