当前位置:  开发笔记 > 编程语言 > 正文

将Typesafe配置类型转换为java.util.Properties

如何解决《将Typesafe配置类型转换为java.util.Properties》经验,为你挑选了1个好方法。

标题单独说话,我有一个Config对象(来自https://github.com/typesafehub/config),我想传递一个只支持java.util.Properties作为参数的构造函数.有没有简单的方法将Config转换为Properties对象?



1> 小智..:

这是一种将类型安全的Config对象转换为Properties java对象的方法.我只是在一个简单的例子中测试它来创建Kafka属性.

application.conf中给出了这个配置

kafka-topics {
  my-topic {
    zookeeper.connect = "localhost:2181",
    group.id = "testgroup",
    zookeeper.session.timeout.ms = "500",
    zookeeper.sync.time.ms = "250",
    auto.commit.interval.ms = "1000"
  }
}

您可以像这样创建相应的Properties对象:

import com.typesafe.config.{Config, ConfigFactory}
import java.util.Properties
import kafka.consumer.ConsumerConfig

object Application extends App {

  def propsFromConfig(config: Config): Properties = {
    import scala.collection.JavaConversions._

    val props = new Properties()

    val map: Map[String, Object] = config.entrySet().map({ entry =>
      entry.getKey -> entry.getValue.unwrapped()
    })(collection.breakOut)

    props.putAll(map)
    props
  }

  val config = ConfigFactory.load()

  val consumerConfig = {
    val topicConfig = config.getConfig("kafka-topics.my-topic")
    val props = propsFromConfig(topicConfig)
    new ConsumerConfig(props)
  }

  // ...    
}

函数propsFromConfig是你最感兴趣的,关键点是使用entrySet来获得一个扁平的属性列表,以及条目值的展开,它给出了一个类型取决于配置值的Object.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有