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 = _
}
}