我正在尝试使用Helm图表在Minikube中部署我的Spring Boot应用程序。我有一个组态类,我映射所有的@value
变量。如果保持我的地图值在application.yaml
或applicationConfig.yaml
文件,然后
@Value("#{${user.apiKey}}")
private Map<String, String> userApiKeyMap;
工作好。
但是如果我想从values.yaml
传递这个映射,那么它不工作。下面是我尝试过的事情和我得到的错误。试1:
user:
apiKey:
key1: "value1"
key2: "value2"
org.springframework.expression.spel.SpelParseException: Expression [map[key1:value1 key2:value2]] @6: EL1043E: Unexpected token. Expected 'rsquare(])' but was 'colon(:)'
尝试2:
user:
apiKey: |-
key1: "value1"
key2: "value2"
Error: UPGRADE FAILED: YAML parse error on user-service/templates/applicationConfig.yaml: error converting YAML to JSON: yaml: line 29: did not find expected key
尝试3:
user:
apiKey: { key1: "value1",
key2: "value2" }
org.springframework.expression.spel.SpelParseException: Expression [map[key1:value1 key2:value2]] @6: EL1043E: Unexpected token. Expected 'rsquare(])' but was 'colon(:)'
尝试4:
user:
apiKey: '{ "key1": "value1",
"key2": "value2" }'
nested exception is java.lang.IllegalArgumentException: Could not resolve placeholkey2r 'user.apiKey' in value "#{${user.apiKey}}"
尝试5:
user:
apiKey:
- "key1": "value1"
- "key2": "value2"
ERROR 2022-11-09 09:51:01,614 [main] [SpringApplication] Application run failed
org.yaml.snakeyaml.parser.ParserException: while parsing a flow sequence
in 'reader', line 22, column 13:
apiKey: [map[key1:value1 ...
^
expected ',' or ']', but got [
in 'reader', line 22, column 17:
apiKey: [map[key1:value1 ...
^
我能够通过在applicationConfig中添加| quote
来修复它。yaml文件。
,
user:
apiKey: {{ .Values.user.apiKey | quote }}