为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 application.yml 加载属性未绑定

无法从 application.yml 加载属性未绑定

绝地无双 2022-06-04 15:05:35
我想将服务器属性从 application.yml 加载到 Configuration class 。我看到很多人已经问过同样的问题,但没有一个对我有用:(请帮我弄清楚我错过了什么@Configuration  @ConfigurationProperties("demo")  public class Democonfig {    private List<Archive> archive = new ArrayList<>();    public Democonfig(List<Archive> archive) {        this.archive = archive;    }    // Getter and setter   public static class Archive {        private String host;        private String database;        private String port;        public Archive(String host, String database, String port) {            this.host = host;            this.database = database;            this.port = port;        }           // Getters and setters   }}application.ymldemo:  archive:  -    host: "localhost"    database: "archive1"    port: "27017"  -    host: "localhost"    database: "archive2"    port: "27017" 它的显示异常Binding to target [Bindable@129425f type = java.util.List<com.example.demo.config.Democonfig$Archive>, value = 'provided', annotations = array<Annotation>[[empty]]] failed:    Property: demo.archive[0].database    Value: archive1    Origin: class path resource [application.yml]:5:15    Reason: The elements [demo.archive[0].database,demo.archive[0].host,demo.archive[0].port,demo.archive[1].database,demo.archive[1].host,demo.archive[1].port] were left unbound.    Property: demo.archive[0].host    Value: localhost    Origin: class path resource [application.yml]:4:11    Reason: The elements [demo.archive[0].database,demo.archive[0].host,demo.archive[0].port,demo.archive[1].database,demo.archive[1].host,demo.archive[1].port] were left unbound.    Property: demo.archive[0].port    Value: 27017
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

您在嵌套静态类中缺少 No arg 构造函数,实际上不需要为构造函数提供参数。只有 setter 和 getter很好


public static class Archive {

    private String host;

    private String database;

    private String port;


    public Archive() {

        // TODO Auto-generated constructor stub

    }


    public Archive(String host, String database, String port) {

        System.out.println("constri=uu Archive");

        this.host = host;

        this.database = database;

        this.port = port;

    }

    public String getHost() {

        return host;

    }

    public void setHost(String host) {

        this.host = host;

    }

    public String getDatabase() {

        return database;

    }

    public void setDatabase(String database) {

        this.database = database;

    }

    public String getPort() {

        return port;

    }

    public void setPort(String port) {

        this.port = port;

    }

    @Override

    public String toString() {

        return "Archive [host=" + host + ", database=" + database + ", port=" + port + "]";

    }


}


查看完整回答
反对 回复 2022-06-04
  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信