programing

스프링 부트:application.properties에 대시가 있는 환경변수는 어떻게 지정합니까?

oldcodes 2023. 3. 5. 10:23
반응형

스프링 부트:application.properties에 대시가 있는 환경변수는 어떻게 지정합니까?

나는 가지고 있다.application.properties다음과 같은 파일:

mcl.sso.frontend-url=http://blah.com:9001
mcl.sso.mocking-agent=false

명령줄에서 이 두 변수를 덮어쓰려고 합니다.이것은 환경변수를 설정함으로써 가능합니다.명령어를 실행하는 방법은 다음과 같습니다.

MCL_SSO_FRONTEND_URL='foobar' MCL_SSO_MOCKING_AGENT='true' ./gradlew run

하지만 이 변수들의 값을 출력하면mcl.sso.mocking-agenttrue(역시)와 같지만mcl.sso.frontend-url여전히 "http://blah.com:9001"(예상치 않음)과 같습니다.왜 안 되지?mcl.sso.frontend-url부동산의 가치를 변경하시겠습니까?이것이 Spring이 환경 변수를 속성 키로 변환하는 방식과 관련이 있다고 추측할 수 있을 뿐, 이에 대한 구체적인 문서를 찾을 수 없습니다.

spring-boot 매뉴얼부터:

환경변수로부터의 바인딩

대부분의 운영 체제에서는 환경 변수에 사용할 수 있는 이름에 엄격한 규칙을 적용합니다.예를 들어 Linux 쉘 변수에는 문자( )만 포함할 수 있습니다.a로.z또는A로.Z, 숫자(0로.9또는 밑줄 문자(_). 관례상 Unix 쉘 변수 이름도 대문자로 표기됩니다.

Spring Boot의 완화된 바인딩 규칙은 가능한 한 이러한 명명 제한과 호환되도록 설계되었습니다.

표준 형식의 속성 이름을 환경 변수 이름으로 변환하려면 다음 규칙을 따르십시오.

  • 도트 치환(.밑줄 포함( )_).
  • 대시 제거(-).
  • 대문자로 변환합니다.

예를 들어 구성 속성spring.main.log-startup-info라고 하는 환경 변수가 됩니다.SPRING_MAIN_LOGSTARTUPINFO.

환경 변수는 개체 목록에 바인딩할 때도 사용할 수 있습니다.에 바인드하다List요소 번호는 변수 이름에서 밑줄로 둘러싸여 있어야 합니다.

예를 들어 구성 속성my.service[0].other라고 하는 환경변수를 사용합니다.MY_SERVICE_0_OTHER.

이것은 스프링 부트 시점에서 수정되었습니다.1.2.5. 이전에는,MCL_SSO_FRONTEND-URL(밑줄로 변환할 수 없는 대시 포함).

샘플 프로젝트를 사용하여 바인딩을 사용할 수 있습니다.

대시만 없애면 됩니다.

mcl.sso.mocking-agent > MCL_SSO_MOCKINGAGENT

언급URL : https://stackoverflow.com/questions/31620916/spring-boot-how-do-you-specify-an-environment-variable-that-has-dashes-in-the-a

반응형