Springboot-@ConfigurationProperties不填充类字段

时间:2020-09-15 11:49:09

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

我知道类似的问题已经问了很多遍,而且变化不一。我试图从他们那里学习和从可用的教程中学习并尝试使其正常运行,但是我认为我缺少一些我无法弄清的东西。

我想从外部yaml文件admin-config.yml加载配置,而不是默认的application.yml

这是我到目前为止所做的。

  1. @EnableConfigurationProperties注释应用程序文件
@SpringBootApplication
@EnableConfigurationProperties
public class MyServer {

    public static void main(String[] args) {
        SpringApplication.run(MyServer.class, args);
    }
}
  1. AdminConfig组件类:
@Component
@PropertySource("classpath:admin-config.yml")
@ConfigurationProperties(prefix = "admin-config")
public class AdminConfig {

    private List<PrimeModerator> primeModerators;

    @PostConstruct
    public void init() {
        System.out.println(primeModerators);    // this is null
    }

    public void setPrimeModerators(List<PrimeModerator> primeModerators) {
        this.primeModerators = primeModerators;
    }

    public List<PrimeModerator> getPrimeModerators() {
        return primeModerators;
    }
}

  1. PrimeModerator
@Data
public class PrimeModerator implements Serializable {
    private long id;
    private String name;
    private List<String> roles;
    private String details;
    private Date created;
}
  1. admin-config.yml
admin-config:
  primeModerators:
    - !!com.mydomain.model.PrimeModerator
      id: 1
      name: Pawan
      roles: [super-admin]

    - !!com.mydomain.model.PrimeModerator
      id: 2
      name: Prashant
      roles: [admin, moderator]

我创建了一个总是失败的单元测试用例(应该不会失败)。

@SpringBootTest
@RunWith(SpringRunner.class)
public class AdminConfigTest {

    @Autowired
    private AdminConfig adminConfig;

    @Test
    public void testAdminConfig() {
        assertNotNull(adminConfig.getPrimeModerators());    // this fails
    }
}

我不确定这里缺少什么。在jdk8中使用springboot版本2.2.1.RELEASE

谢谢您的回答!

1 个答案:

答案 0 :(得分:0)

此文档中的内容: Baeldung - Spring

它说: “ Hibernate Validation框架使用标准的Java bean的getter和setter,因此对每个属性声明getter和setter很重要。

能否请您在PrimeModerator中添加getters / settest进行测试? 您是否在嵌套数组之前尝试过一个简单的String值? 祝你好运...

A github sample on Baeldung in the bottom of page

相关问题