Springboot-@ConfigurationProperties没有填充类字段



我知道类似的问题已经被问了很多次,但都有不同的变体。我试着从他们和现有的教程中学习,并试图让它发挥作用,但我认为我错过了一些我无法理解的东西。

我想从外部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
}
}

我不确定我在这里错过了什么。将springboot版本2.2.1.RELEASE与jdk8。

感谢您提前回答!

来自本文档:Baeldung-弹簧

上面写着:">Hibernate Validation框架使用标准的Javabean getter和setter,因此我们为每个属性声明getter和getter非常重要";

你能在PrimeMultrator中添加getters/ssettest进行测试吗?在嵌套数组之前,您是否尝试过使用单个简单的String值?祝你好运

页面底部的Baeldung上的github示例

最新更新