当前位置: 首页 > 知识库问答 >
问题:

使用Scala读取Spring Boot配置属性

李俭
2023-03-14

我在Scala中使用Spring Boot。我想通过@ConfigurationProperties注释读取带有Scala类型的case类的属性。我已经知道我将无法注释Scala case类,因为Spring Boot不支持基于构造的属性注入。但至少我希望将集合(列表和映射)从配置映射到基于Scala的类型。这样我就可以编写一个配置类:

@Component
@Configurathtml" target="_blank">ionProperties("kafka")
case class KafkaConfig() {
  @BeanProperty
  var bootstrapServers: List[String] = _

}

并编写一个配置文件application.yml如下:

kafka:
  bootstrapServers:
    - "node1:9092"
    - "node2:9092"

这有可能吗?我尝试在这种情况下使用转换器,如下所示:

import org.springframework.core.convert.converter.Converter
import scala.collection.JavaConverters._

@Component
@ConfigurationPropertiesBinding
class JavaListToList extends Converter[java.util.List[Any], List[Any]] {
  override def convert(s: java.util.List[Any]): List[Any] = {
    s.asScala.toList
  }
}

但这不起作用,因为Spring尝试不转换已读(java)列表,而是实例化一个空的Scala列表并附加到它。所以我肯定走错了路。

我将非常感谢您的帮助。

共有1个答案

卢勇
2023-03-14
import java.util.{List => JList, ArrayList => JArrayList}

@Configuration
@ConfigurationProperties("kafka")
class AppConfig {

 @BeanProperty
 var bootstrapServers: JList[String] = new JArrayList[String]

 def getBootStrapServer: JList[String]  = bootstrapServers
}

import java.util.{List => JList, ArrayList => JArrayList}

@Component
@ConfigurationProperties(prefix = "kafka")
class KafkaConfig {

 @BeanProperty
 var bootstrapServers: JList[String] = new JArrayList[String]

 def getBootStrapServer: JList[String]  = bootstrapServers
}
 类似资料:
  • 我们正在将应用程序从 WAS 6.1 迁移到自由。我们的应用程序使用第三方 jar,通过 InputStream 读取属性文件。在 WAS 6.1 中,我们将服务器类路径设置为 myproperty.properties 的位置。我们尝试了以下方法来在 Liberty 中设置类路径,但没有任何效果 方法1:在jvm.options中设置以下内容(D:\ConfigFiles\DEV\-包含mypr

  • 我刚开始穿弹力靴。这就是我要解决的问题。我有一个application.yml文件,它具有以下属性: 我尝试使用以下代码访问KinesisSenderFeature的值: 以及 PropertySourcesPlaceHolderConfigureer bean定义为: 是的,我确实看到了: 将Yaml中的列表映射到Spring Boot中的对象列表 Spring boot YAML配置未读取所有

  • 问题内容: 我正在尝试从我的wildfly配置文件夹中的属性文件中读取特定于部署的信息。我尝试了这个: 但是显然这不起作用,因为配置文件夹不再位于类路径中。现在我找不到一种简单的方法。我最喜欢的是这样的: 到目前为止,我在网上找到的唯一解决方案是制作自己的OSGi模块,但是我相信必须有一种更简单的方法来实现(一个没有OSGi!)。谁能告诉我如何? 问题答案: 如果要从配置目录(例如或)中显式读取文

  • 你好,我在我的项目中使用Spring Boot和Hikari进行db连接。spinger引导版本是2.2.5.RELEASE,Hikari是3.4.2。但是,当我运行我的项目时,它总是使用Hikari默认配置值,而不是使用我的属性文件中的值。这是我的属性: 这是我在应用程序配置中的数据源: 下面是输出:10:23:19.050[main]DEBUG com . zax xer . hikari .

  • 我正在使用Java的发送SMS。我已经加载了log4j jar文件,并将文件放置在正确的位置,但它仍然无法读取它,并得到以下异常: 例外文本:

  • 我需要从正在运行的实例中转储springboot应用程序属性,可以吗?我需要它的原因:我正在使用链接配置文件,但其中一个属性设置不正确。谢谢