Spring Boot加载以数字为键的嵌套属性

时间:2018-10-12 14:28:08

标签: java spring spring-boot spring-profiles spring-properties

我在Spring Boot应用程序中具有嵌套属性。例如:

 topics:
  target:
    abc_1:
      12345678:
        key: value_1
      default:
        key: value_1

我尝试在班级中使用@Value访问该值,如下所示:

@Value("${topics.target.abc_1.12345678.key}")
private String key;

但是在启动应用程序时出现以下异常。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name '***': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'topics.target.abc_1.12345678.key' in value "${topics.target.abc_1.12345678.key}"

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1341)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:393)

但是令人惊讶的是,当我尝试加载topics.target.abc_1.default.key时,它可以工作。在嵌套结构的属性中,将数字作为键是否有任何限制? 我确定带有数字值的键在非嵌套结构中不会出现任何问题。

1 个答案:

答案 0 :(得分:1)

问题是由于其中一个键abc_1中的“ _” 引起的。

从属性中删除“ _”后,一切似乎都正常运行。