gpt4 book ai didi

java - 外部化配置不适用于 Scala 的 Map

转载 作者:行者123 更新时间:2023-12-02 11:43:57 25 4
gpt4 key购买 nike

我尝试加载外部文件的属性值,并且该属性存储为键值格式(映射)。如果我使用java的Map就可以正常工作,就像代码一样:

import java.util.{Map, HashMap}

@Component
@ConfigurationProperties(prefix="config")
class ConfigProperties {
val corporationSecrets : Map[String, String] = new HashMap[String, String]
}

但是当我将 map 更改为Scala的 map 时,我无法从 map 中获取任何值,即 map 是空的。

import java.util.HashMap
import scala.collection.JavaConverters._

@Component
@ConfigurationProperties(prefix="config")
class ConfigProperties {
val corporationSecrets : Map[String, String] = new HashMap[String, String].asScala
}

我尝试了可变映射和不可变映射,但没有任何情况有效。

这是否意味着我不能在这种情况下使用 Scala 的 map ?

最佳答案

是的,Spring Boot 不知道如何处理 Scala 集合。但是您可以在内部使用 Java 集合并添加返回 Scala 版本的方法。当然,他们需要有不同的名字。例如

import java.util.{HashMap => JHashMap, Map => JMap}

import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.stereotype.Component
import scala.beans.BeanProperty
import scala.collection.JavaConversions._
@Component
@ConfigurationProperties(prefix = "security-util")
class SecurityUtilProperties {

@BeanProperty
val corporationSecrets: JMap[String, String] = new JHashMap[String, String]

def corporationSecretsScala = corporationSecrets.asScala
}

关于java - 外部化配置不适用于 Scala 的 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48333896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com