标题单独说话,我有一个Config对象(来自https://github.com/typesafehub/config),我想传递一个只支持java.util.Properties作为参数的构造函数.有没有简单的方法将Config转换为Properties对象?
这是一种将类型安全的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.