我知道类似的问题已经问了很多遍,而且变化不一。我试图从他们那里学习和从可用的教程中学习并尝试使其正常运行,但是我认为我缺少一些我无法弄清的东西。
我想从外部yaml文件admin-config.yml
加载配置,而不是默认的application.yml
。
这是我到目前为止所做的。
@EnableConfigurationProperties
注释应用程序文件@SpringBootApplication
@EnableConfigurationProperties
public class MyServer {
public static void main(String[] args) {
SpringApplication.run(MyServer.class, args);
}
}
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;
}
}
PrimeModerator
类@Data
public class PrimeModerator implements Serializable {
private long id;
private String name;
private List<String> roles;
private String details;
private Date created;
}
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
。
谢谢您的回答!
答案 0 :(得分:0)
此文档中的内容: Baeldung - Spring
它说: “ Hibernate Validation框架使用标准的Java bean的getter和setter,因此对每个属性声明getter和setter很重要。”
能否请您在PrimeModerator中添加getters / settest进行测试? 您是否在嵌套数组之前尝试过一个简单的String值? 祝你好运...