使用@ConfigurationProperties

时间:2018-01-27 00:02:08

标签: spring-boot yaml configurationproperty

我正在将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中。一切正常。 请解释并帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

我刚想通了。 基于此处的文档:Externalized Configuration,我不能拥有2个yaml文件,并且无法通过@PropertySource加载yaml文件。