Sping-Boot 구성:맵 채우기에 사용되는 yaml 키의 공백을 유지하는 방법
구성 속성 클래스가 있다고 가정해 보겠습니다.
@ConfigurationProperties(prefix = "whitespace.test")
public class WhitespaceTestConfig {
private Map<String, String> configs;
public Map<String, String> getConfigs() {
return configs;
}
public void setConfigs(Map<String, String> configs) {
this.configs = configs;
}
}
공간이 포함된 키로 구성하려고 합니다.
whitespace.test.configs:
Key With Whitespace: "I am a value with whitespace in it"
스프링을 통해 이 얌알 미세물을 파싱할 수 있는 것 같고, 분명히 유효한 얌알입니다.그러나 스프링(SnakeYaml?)은 키 문자열의 공백을 제거합니다.
KeyWithWhitespace -> I am a value with whitespace in it
쉬운 해결책은 공간에 대한 특별한 문자를 지정하여 애플리케이션 내에서 대체하는 것입니다만, 봄이 이미 어떤 방식으로 이 문제를 처리했는지 궁금합니다.스프링(SnakeYaml?)이 유지하려는 공간을 알 수 있도록 구성의 공간을 탈출하는 방법이 있을 수도 있고, 아니면 이를 구성하는 방법이 있을 수도 있습니다.
완성도를 위해 싱글 인용과 더블 인용을 사용해 보았습니다.\s
\b
.
업데이트:
몇 가지 추가 조사 끝에 SnakeYaml 저장소에서 찾고 있는 것이 가능해야 한다는 것을 나타내는 예를 발견했습니다. https://bitbucket.org/asomov/snakeyaml/wiki/Documentation#markdown-header-block-mappings
구체적으로 다음 예를 들 수 있습니다.
# YAML
base armor class: 0
base damage: [4,4]
plus to-hit: 12
plus to-dam: 16
plus to-ac: 0
# Java
{'plus to-hit': 12, 'base damage': [4, 4], 'base armor class': 0, 'plus to-ac': 0, 'plus to-dam': 16}
예제에서는 공백이 키에 지속됩니다.안타깝게도, 저는 실제 공간이 어디서 제거되는지 파악하는 것에 대해 난감해요.
특수 문자가 있는 지도 키의 경우 키를 에워싸야 합니다.'[]'
지정한 대로 키를 사용할 수 있습니다.
그러니까, 당신의 경우엔
whitespace.test.configs:
'[Key With Whitespace]': "I am a value with whitespace in it"
새 바인더는 특성 이름에 대해 훨씬 더 엄격하므로, 특성 이름을 대괄호로 둘러쌀 필요가 있습니다.다음을 시도해 봅니다.
shiro:
testMap:
"[/test1]": test1
"[/test2]": test2
언급URL : https://stackoverflow.com/questions/57795723/sping-boot-config-how-to-keep-whitespace-in-yaml-key-being-used-to-populate-map
'programing' 카테고리의 다른 글
jQuery에서 여러 ID 처리 (0) | 2023.10.01 |
---|---|
자바스크립트에서 객체 배열에서 값을 찾는 방법은? (0) | 2023.09.26 |
jQuery에서 프로그래밍과 사용자 클릭을 구분하려면 어떻게 해야 합니까? (0) | 2023.09.26 |
printf에서 선행 0을 숨기는 방법 (0) | 2023.09.26 |
Oracle의 PERCENTILE_CONT 함수의 PostgreSQL 등가물 (0) | 2023.09.26 |