当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Yaml@Property tySource@ConfigurationProperties属性源文件中的列表未注入

微生令雪
2023-03-14

我正在尝试使用@ConfigurationPropertiesexternal.yml属性注入POJO,并使用@Property tySource导入我的external.yml文件。所有其他都被注入到POJO中,但不是一个复杂的列表。

a、 我尝试对复杂列表和映射使用@NestedConfigurationProperty。b、 我尝试将复杂的POJO作为内部静态类和外部类。c、 已尝试启用配置属性(EnableConfigurationProperties)批注。等

ExternalProp.java

   @Component
   @PropertySource(value = "classpath:external.yml", encoding = "UTF-8")
   @ConfigurationProperties

   @Data
   public class ExternalProp {

    private String bla;
    private List<Person> persons;
    private List<String> other;

    @Data
    public static class Person {

        private int age;
        private String name;
        private Map<String, String> args;
    }

}

external.yml

   bla: bkdfjgkdf
   persons:
   -  age: 12
      name: bla1
      args:
        a0: a0dev
        a1: a1dev
        a2: a2dev
   -  age: 12
      name: bla2
      args:
        b0: b0dev
        b1: b1dev
        b2: b2dev
   strings: bla, bla1

已正确注入bla:bkdfjgkdf和字符串:bla、bla1,但未注入人员。我哪里出错了。

和复制到应用程序的相同对象。yml文件,然后,砰的一声,正确地获取值。

我正在等待一个拥有一些Map参数的人员列表。

共有1个答案

严曜文
2023-03-14

我相信这与你的yml格式有关。试试这个

external.yml

   bla: bkdfjgkdf
   persons:
      -  age: 12
         name: bla1
         args:
           a0: a0dev
           a1: a1dev
           a2: a2dev
      -  age: 12
         name: bla2
         args:
           b0: b0dev
           b1: b1dev
           b2: b2dev
   strings: bla, bla1
 类似资料:
  • 我在上一篇文章中问过这个问题:Spring Security的SpEL:将值从XML传递到基于Java的SpEL配置。但这还没有解决。我想将xml配置或外部文件中的值注入

  • 我想通过使用@ConfigurationProperties注释将我的Application.Properties自动绑定到一个类中。首先,我尝试了@value注释,并能够将属性值注入类变量。但是,@ConfigurationProperties没有将属性注入到值中。 我的应用程序.属性: application.java ConfigBinder.java 输出: 这样的执行到底出了什么问题?

  • 我有以下课程: 我从控制器调用方法test(): 然而,spring并没有注入构建。版本值,即使类具有组件注释。 我在控制器中使用相同的属性,它工作正常。 我做错了什么?

  • 问题内容: 我是Python的新手,我刚刚发现了属性。当我在一个简单的变量上尝试它时,它工作得很好,但是我无法使其在列表上工作。当执行下面的代码时,它将调用两次getter而不是setter。我知道在我的示例中,该属性没有附加值,但只是为了简化。 有人知道我在做什么错吗? 问题答案: 仅当您直接获取或设置属性时,才使用setter / getter: 如果您修改属性中的元素,则会获得该属性,然后设