java - 将 yml 中的列表映射到 Scala 中的对象列表(Spring Boot)
问题描述
背景:
我已经阅读了很多关于如何使用ConfigurationProperties
从配置中读取列表的示例.. 见下文
- 将 Yaml 中的列表映射到 Spring Boot 中的对象列表
- https://github.com/konrad-garus/so-yaml
- https://www.boraji.com/spring-boot-configurationproperties-example
.. 和更多。
我无法在Scala中实现这一点。我想从 application.yml 获取组织列表(id 和名称),但它总是返回一个空列表。
应用程序.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;
}
}
}
返回两个组织的列表
解决方案
我设法解决了这个问题。这是我所做的:
- 改为
List
_Array
- 重写类以具有字段而不是构造函数参数
- 介绍
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 = _
}
}
推荐阅读
- vb.net - devExpress searchLookupEdit 没有设置值
- github-enterprise - in the github enterprise UI, is there a way to see commit statuses outside of the PR context?
- java - 如何在 Java 字符串中编码 unicode 字符,如 \u0022 和 \u005c(\ 和“)?
- yaml - 在yaml中预先声明一个排除的锚标头?
- python - 计算networkx图中开放三角形的数量
- node.js - 你能帮我解决这个 nginx 配置,让它与 https 中的域一起工作吗?
- twilio - 从 Twilio 函数调用的 Twilio 验证返回未找到资源
- python-3.x - 如何在 sklearn 中使用 gower 距离实现 pam 聚类算法?
- sql - 通过返回多行选择 distinct + group
- python - 出现错误:“ValueError:如果使用所有标量值,则必须传递索引”将 ndarray 转换为 pandas Dataframe