我正在将Spring Boot 1.4.2用于我的小项目。我的配置类如下
@Component
@PropertySource("classpath:global1.yml")
@ConfigurationProperties
public class GlobalProperties {
private String name;
private List<Menu> menus = new ArrayList<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Menu> getMenus() {
return menus;
}
public void setMenus(List<Menu> menus) {
this.menus = menus;
}
@Override
public String toString() {
return "GlobalProperties{" +
", name='" + name + '\'' +
", menus=" + menus + '\'' +
'}';
}
}
和global1.yml
name: "helloworld"
menus:
- title: Home
name: Home
path: /
- title: Login
name: Login
path: /login
如果我没有在YAML文件中添加menus
列表,则代码很好。但是通过上面的文件,我得到了
Property: target.menus
Value:
Reason: Failed to convert property value of type 'java.lang.String' to required type 'java.util.List' for property 'menus'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.test.Menu' for property 'menus[0]': no matching editors or conversion strategy found
另外,如果我将所有这些属性放在application.yml
中。一切正常。
请解释并帮我解决这个问题。
答案 0 :(得分:2)
我刚想通了。
基于此处的文档:Externalized Configuration,我不能拥有2个yaml文件,并且无法通过@PropertySource
加载yaml文件。