환경변수를 통해 이름에 밑줄을 사용하여 Spring Boot 속성을 설정하려면 어떻게 해야 합니까?
hibernate.format_sql
스프링 부츠환경변수를 사용하여 설정하고 싶습니다.
Spring Boot에서 모든 합니다.FOO_BAR_BAZ
to to to to to to to to to to라고 하는 foo.bar.baz
봄.
Spring Boot에서 환경변수를 사용하여 타깃 이름에 밑줄이 있는 속성을 설정하려면 어떻게 해야 합니까? ★★★★★★★★★★★★★★★★★.HIBERNATE_FORMAT_SQL
will will will will will will will will will will will로 번역됩니다.로 번역됩니다.hibernate.format.sql
이것은 오래된 질문이지만, (나와 같은) 다른 누군가가 이 정보를 찾게 될 경우에 대비하여 대답하겠습니다.
HISBERNATE_FORMAT_SQL이 기능을 합니다.
실제로 "변환"되는 것은 OS 환경 변수가 아니라 Spring 속성 이름입니다.
이름은 여러 가지 방법으로 변환되며 사용 가능한 환경 변수와 대조됩니다.예: "hibernate"format.sql"은 다음과 같이 검색됩니다.
- 동면하다format.sql(있는 그대로)
- hibernate_format_sql(밑줄로 대체됨)
- hibernate_format_sql(대시는 밑줄로 대체됩니다.이 경우는 동일합니다)
- hibernate_format_sql(대시 및 도트는 밑줄로 대체됩니다.이 경우는 동일합니다)
대문자에서도 마찬가지입니다.
- 휴지 상태FORMAT.SQL (있는 그대로)
- HISBERNATE_FORMAT_SQL(도트는 밑줄로 대체됨)
- HISBERNATE_FORMAT_SQL(대시는 밑줄로 대체되어 동일)
- HISBERNATE_FORMAT_SQL (대시 및 도트는 밑줄로 대체되어 동일)
set 명령 또는 export 명령어를 사용하여 이름에 점이 있는 환경변수를 설정할 수 없지만 env 명령어를 사용하면 가능합니다.나는 이것이 좋은 생각인지 아닌지에 대한 판단을 보류한다.
env "my.dotted.name=\"a value\"" the-command-you-want-to-run
자세한 내용은 System Environment Property Source.java를 참조하십시오.특정 버전에 링크합니다만, 사용하고 있는 버전을 확인해 주세요.
프로덕션 환경에서 이러한 문제를 해결하려면 속성 해결 코드에 대한 디버깅 로깅을 켜 보십시오.
logging:
level:
org.springframework.core.env: DEBUG
... 또는 적절한 환경변수를 설정함으로써 :)
편집: 관련 Spring Boot 매뉴얼 토픽을 숙지하는 것이 좋습니다.https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
여기에 있는 코멘트의 보다 까다로운 예에 대해서는, 예를 들면 다음과 같습니다.spring.jpa.properties.hibernate.criteria.literal_handling_mode
어플리케이션의 기동 방법에 따라서는, 다른 솔루션을 사용할 수 있습니다.
변수를 환경 변수에 포함된 JSON으로 설정할 수 있습니다.
env SPRING_APPLICATION_JSON='{"spring":{"jpa":{"properties":{"hibernate":{"criteria":{"literal_handling_mode":"BIND"}}}}}}' ./gradlew bootRun
변수를 그대로 설정하기만 하면 다음과 같이 동작할 수 있습니다.
env spring.jpa.properties.hibernate.criteria.literal_handling_mode=BIND ./gradlew bootRun
위의 두 가지가 모두 실행 중인 Spring Boot 어플리케이션의 값을 이렇게 얻을 수 있는 한에서의 셋업으로 동작했습니다.
@Value("${spring.jpa.properties.hibernate.criteria.literal_handling_mode}")
private String testSettingThroughEnvVariable;
이게 도움이 됐으면 좋겠네요!YMMV
나도 같은 문제가 있었어 환경 변수spring_jpa_properties_hibernate_default_schema
봄 번역:spring.jpa.properties.hibernate.default.schema
단, 휴지 상태에서는hibernate.default_schema
.
(디바이스 문제)를 이유로 단순히 로 변경할 수 없습니다.spring.jpa.properties.hibernate.default_schema
- 로컬 머신으로 작업합니다.
이렇게 풀었어요.
@Component
public class HibernateConfig implements HibernatePropertiesCustomizer {
private final static String HIBERNATE_CUSTOM_DEFAULT_SCHEMA_PARAM = "hibernate.default.schema";
@Override
public void customize(Map<String, Object> hibernateProperties) {
if (hibernateProperties.containsKey(HIBERNATE_CUSTOM_DEFAULT_SCHEMA_PARAM)) {
hibernateProperties.put(AvailableSettings.DEFAULT_SCHEMA, hibernateProperties.get(HIBERNATE_CUSTOM_DEFAULT_SCHEMA_PARAM));
}
}
}
알고보니SPRING_JPA_SHOW_SQL=true
정상적으로 동작합니다.이것이 특정 속성의 이름이 과부하가 되었음을 의미하는 것인지, 아니면 스프링이 더 영리한 일을 하고 있는지 알 수 없습니다.그것은 나의 문제를 해결했고 내가 질문한 예에 대해 원하는 행동을 했다.
언급URL : https://stackoverflow.com/questions/34178556/how-to-set-a-spring-boot-property-with-an-underscore-in-its-name-via-environment
'bestsource' 카테고리의 다른 글
리액트 J:this.props.children의 PropType은 무엇입니까? (0) | 2023.03.20 |
---|---|
JSON 오브젝트의 아이템이 "json.dumps"를 사용하여 고장났습니까? (0) | 2023.03.20 |
React의 Strict Mode란 무엇입니까? (0) | 2023.03.20 |
장고 CSRF 토큰 + Angularjs (0) | 2023.03.20 |
@Component에서 클래스에 주석을 다는 경우 Spring Bean과 Singleton을 의미합니까? (0) | 2023.03.20 |