I want to have a property like below that is a map of maps
propertymap = {
key1:'{subkey1:'subvalue1',subkey2:'subvalue2'}',
key2:'{subkey3:'subvalue3',subkey4:'subvalue4'}' }
@Value("#{${propertymap}}")
private Map<String,Map<String,String>> propertymap;
used code like above in my config class but got error. please let me know if there is a way to do this.
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.util.Map nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelParseException: EL1043E:(pos 17): Unexpected token. Expected 'rcurly(})' but was 'identifier'
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
Ajay Raman
I found the way, I had to just remove the ' after the key
propertymap = {
key1:{
subkey1:'subvalue1',
subkey2:'subvalue2'
},
key2:{
subkey3:'subvalue3',
subkey4:'subvalue4'
}
}
and below code picks it up
@Value("#{${propertymap}}")
private Map<String,Map<String,String>> propertymap;
来源:https://stackoverflow.com/questions/47272477/i-want-to-read-spring-properties-file-that-has-a-map-of-maps