복붙노트

[SPRING] 환경 변수를 통해 이름에 밑줄이있는 Spring Boot 속성을 설정하는 방법은 무엇입니까?

SPRING

환경 변수를 통해 이름에 밑줄이있는 Spring Boot 속성을 설정하는 방법은 무엇입니까?

스프링 부트 앱에서 hibernate.format_sql을 설정하고 싶다. 환경 변수를 사용하여 설정하려고합니다.

Spring Boot는 Spring 환경에서 FOO_BAR_BAZ와 같은 모든 환경 변수를 foo.bar.baz라는 속성으로 변환합니다.

환경 변수를 사용하여 Spring Boot에서 대상 이름에 밑줄이있는 속성을 어떻게 설정할 수 있습니까? 아마도 HIBERNATE_FORMAT_SQL은 hibernate.format.sql로 변환 될 것입니까?

해결법

  1. ==============================

    1.이것은 오래된 질문이지만 누군가 (나 같은) 다른 사람들이이 정보를 찾는 경우에 대비하여 대답 할 것입니다.

    이것은 오래된 질문이지만 누군가 (나 같은) 다른 사람들이이 정보를 찾는 경우에 대비하여 대답 할 것입니다.

    HIBERNATE FORMAT_SQL은 트릭을해야합니다.

    사실 "번역 된"OS 환경 변수가 아니라 Spring 속성 이름입니다.

    이름은 여러 가지 방법으로 번역되어 사용 가능한 환경 변수를 찾았습니다. 예 : "hibernate.format.sql"은 다음과 같이 조회됩니다 :

    그렇다면 대문자와 동일합니다.

    set 또는 export 명령으로 점에 이름이있는 환경 변수를 설정할 수는 없지만 env 명령으로는 가능합니다. 나는 이것이 좋은 생각인지 아닌지에 대한 판단을 연기한다.

    env "my.dotted.name=\"a value\"" the-command-you-want-to-run
    

    SystemEnvironmentPropertySource.java를 살펴보십시오.   자세한 내용은 특정 버전으로 연결되지만 사용중인 버전을 확인해야합니다.

    프로덕션 환경에서 이러한 종류의 문제를 해결하려면 속성 해결 코드에 대한 디버그 로깅을 켜십시오.

    logging:
      level:
        org.springframework.core.env: DEBUG
    

    ... 또는 적절한 환경 변수를 설정하여 :)

  2. ==============================

    2.SPRING_JPA_SHOW_SQL = true가 정상적으로 작동합니다. 특정 속성에 대한 이름이 과부하인지, 아니면 Spring이 더 영리한 작업을하고 있는지 여부를 알 수 없습니다. 그것은 내 문제를 해결하고 내가 물어 본 예제에 대한 바람직한 행동을했다.

    SPRING_JPA_SHOW_SQL = true가 정상적으로 작동합니다. 특정 속성에 대한 이름이 과부하인지, 아니면 Spring이 더 영리한 작업을하고 있는지 여부를 알 수 없습니다. 그것은 내 문제를 해결하고 내가 물어 본 예제에 대한 바람직한 행동을했다.

  3. from https://stackoverflow.com/questions/34178556/how-to-set-a-spring-boot-property-with-an-underscore-in-its-name-via-environment by cc-by-sa and MIT license