Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将yml中的列表映射到Scala中的对象列表(Spring Boot)_Java_Spring_Scala - Fatal编程技术网

Java 将yml中的列表映射到Scala中的对象列表(Spring Boot)

Java 将yml中的列表映射到Scala中的对象列表(Spring Boot),java,spring,scala,Java,Spring,Scala,背景: @Configuration @ConfigurationProperties(prefix = "org-registry-list") class OrgRegistryConfiguration { var organisations : List[Organisation] = List.empty } object OrgRegistryConfiguration { case class Organisation(orgId: Long, orgName: Stri

背景:

@Configuration
@ConfigurationProperties(prefix = "org-registry-list")
class OrgRegistryConfiguration {
  var organisations : List[Organisation] = List.empty
}

object OrgRegistryConfiguration {
  case class Organisation(orgId: Long, orgName: String)
}
我已经阅读了大量关于如何使用
ConfigurationProperties
从config读取列表的示例。。见下文

  • 。。还有更多


    我无法在Scala中实现这一点。我想从application.yml获取组织的列表(id和名称),但它总是返回一个空列表

    application.yml

    org-registry-list:
      organisations:
        -
          orgId: 1
          orgName: "Google"
        -
          orgId: 20
          orgName: "Microsoft"
    
    这是我在Scala中的尝试:

    @Configuration
    @ConfigurationProperties(prefix = "org-registry-list")
    class OrgRegistryConfiguration {
      var organisations : List[Organisation] = List.empty
    }
    
    object OrgRegistryConfiguration {
      case class Organisation(orgId: Long, orgName: String)
    }
    
    返回
    List()


    这适用于以下Java代码:

    @Configuration
    @ConfigurationProperties(prefix = "org-registry-list")
    public class OrgRegistryConfiguration {
    
        private List<Organisation> organisations;
    
        public OrgRegistryConfiguration(List<Organisation> organisations) {
            this.organisations = organisations;
        }
    
        public OrgRegistryConfiguration() {
        }
    
        public List<Organisation> getOrganisations() {
            return organisations;
        }
    
        public void setOrganisations(List<Organisation> organisations) {
            this.organisations = organisations;
        }
    
        public static class Organisation {
    
            private long orgId;
            private String orgName;
    
    
            public Organisation(long orgId, String orgName) {
                this.orgId = orgId;
                this.orgName = orgName;
            }
    
            public Organisation() {}
    
            public long getOrgId() {
                return orgId;
            }
            public void setOrgId(long orgId) {
                this.orgId = orgId;
            }
    
            public String getOrgName() {
                return orgName;
            }
            public void setOrgName(String orgName) {
                this.orgName = orgName;
            }
    
        }
    
    }
    
    @配置
    @配置属性(前缀=“组织注册表列表”)
    公共类OrgRegistryConfiguration{
    私人名单组织;
    公共组织注册配置(列出组织){
    这是。组织=组织;
    }
    公共组织注册表配置(){
    }
    公共机构名单(){
    返回组织;
    }
    公共组织(名单组织){
    这是。组织=组织;
    }
    公共静态班级组织{
    私人长高潮;
    私有字符串orgName;
    公共组织(长orgId、字符串orgName){
    this.orgId=orgId;
    this.orgName=orgName;
    }
    公共组织(){}
    公共长getOrgId(){
    回归原点;
    }
    公共无效setOrgId(长orgId){
    this.orgId=orgId;
    }
    公共字符串getOrgName(){
    返回orgName;
    }
    public void setOrgName(字符串orgName){
    this.orgName=orgName;
    }
    }
    }
    
    返回两间机构名单


    我设法解决了这个问题。以下是我所做的:

  • 列表
    更改为
    数组
  • 重写类,使其具有字段而不是构造函数参数
  • 介绍
    scala.beans.BeanProperty
  • 工作代码:

    import scala.beans.BeanProperty
    
    @Configuration
    @ConfigurationProperties(prefix = "org-registry-list")
    class OrgRegistryConfig() {
      @BeanProperty
      var organisations: Array[Organisation] = _
    }
    
    object OrgRegistryConfig {
      class Organisation() {
        @BeanProperty
        var orgId: Long = _
        @BeanProperty
        var orgName: String = _
      }
    }