शीर्षक स्वयं ही वार्तालाप करता है, मेरे पास एक कॉन्फ़िगर ऑब्जेक्ट है (https://github.com/typesafehub/config से) और मैं इसे एक कन्स्ट्रक्टर पास करना चाहता हूं जो केवल java.util.Properties को तर्क के रूप में समर्थन देता है। क्या एक कॉन्फ़िगरेशन ऑब्जेक्ट में कॉन्फ़िगर करने का कोई आसान तरीका है?कनवर्टिंग टाइपएफ़ कॉन्फ़िगर प्रकार java.util.Properties
उत्तर
typesafe config
/hocon
java.util.propeties
से अधिक समृद्ध संरचना का समर्थन करता है, तो इसे सुरक्षित रूपांतरण प्राप्त करना मुश्किल होगा।
या अन्यथा properties
के रूप में बोली जाने वाली बात केवल hocon
का उप-समूह व्यक्त कर सकती है, रूपांतरण स्पष्ट नहीं है, क्योंकि इसमें संभावित जानकारी हानि होगी।
तो यदि आप कॉन्फ़िगरेशन अपेक्षाकृत फ्लैट हैं और इसमें utf-8
नहीं है तो आप hocon
से json
को बदल सकते हैं और फिर मान निकाल सकते हैं।
एक बेहतर समाधान ConfigClass
को लागू करना होगा और मूल्यों को हुकॉन से मूल्यों के साथ पॉप्युलेट करना होगा और इसे उस कक्षा में पास करना होगा जिसे आप कॉन्फ़िगर करना चाहते हैं।
यहाँ एक तरह से एक गुण जावा वस्तु में एक typesafe कॉन्फ़िग वस्तु कन्वर्ट करने के लिए है। मैंने केवल कफका गुण बनाने के लिए इसे एक साधारण मामले में परीक्षण किया है।
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"
}
}
आप इसी गुण उद्देश्य यह है कि प्रकार बना सकते हैं
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 क्या आप मुख्य रूप से रुचि रखते हैं है में, और मुख्य बिंदु एंट्रीसेट का उपयोग करने के लिए हैं और गुणों की एक flatten सूची, और प्रवेश मूल्य के unrapped, जो एक वस्तु देता है जो प्रकार विन्यास मूल्य पर निर्भर करता है।
आप मेरे स्कैला रैपर https://github.com/andr83/scalaconfig को आजमा सकते हैं। इसका उपयोग कॉन्फ़िगरेशन ऑब्जेक्ट को जावा गुणों में कनवर्ट करना सरल है:
val properties = config.as[Properties]
यह कॉन्फ़िगर इम्हो का हिस्सा होना चाहिए –
- 1. सीरियलाइजिंग टाइपएफ़ कॉन्फ़िगर ऑब्जेक्ट्स
- 2. java.util.Properties
- 3. टाइपएफ़
- 4. एसक्यूएल कनवर्टिंग कॉलम प्रकार फ्लोट से वर्कर
- 5. टाइपएफ़ कॉन्फ़िगर: src/test/संसाधनों से लोड कॉन्फ़िगरेशन
- 6. टाइपएफ़ एक्टिवेटर
- 7. टाइपएफ़ एक्टिवेटर
- 8. टाइपएफ़ एक्टिवेटर
- 9. वस्तुओं को java.util.Properties
- 10. कक्षा प्रकार से जेनेरिक टाइपएफ़ हैश मैप कैसे बनाएं?
- 11. सी में टाइपएफ़ enums?
- 12. सी # enums टाइपएफ़ हैं?
- 13. टाइपएफ़ एक्टिवेटर संकलन त्रुटि
- 14. हाइबरनेट के साथ java.util.Properties persist?
- 15. एंड्रॉइड int हेक्स कनवर्टिंग
- 16. टाइपएफ़ कॉन्फ़िगरेशन: सशर्त कॉन्फ़िगरेशन कैसे बनाएं
- 17. सी # कनवर्टिंग पीडीएफ से एचटीएमएल
- 18. कनवर्टिंग सूची [विकल्प [ए]] स्केल
- 19. जावास्क्रिप्ट कनवर्टिंग स्ट्रिंग मान हेक्स
- 20. कनवर्टिंग system.windows.media.brush हेक्स रंग कोड
- 21. java.util.Properties फ़ील्ड के लिए स्प्रिंग जावाकॉन्फिग
- 22. java.util.Properties बनाम java.util.Map <स्ट्रिंग, स्ट्रिंग>
- 23. दो java.util.Properties ऑब्जेक्ट्स को मर्ज कैसे करें?
- 24. Scipy त्रुटि। फेलर कनवर्टिंग सरणी से फोर्टन
- 25. डब्ल्यूसीएफ सिस्टम से ज्ञात प्रकार। कॉन्फ़िगर
- 26. कनवर्टिंग TimeUnit को ChronoUnit में कनवर्ट करना?
- 27. स्पार्क एसक्यूएल कनवर्टिंग स्ट्रिंग को टाइमस्टैम्प
- 28. कनवर्टिंग सिस्टम :: स्ट्रिंग टू कॉन्स्ट चार *
- 29. कास्टिंग, पार्सिंग और कनवर्टिंग के बीच अंतर
- 30. जावा कनवर्टिंग लंबे समय तक मुद्रा में
हां, मुझे इस डेटा मॉडल मेल के बारे में पता है। मैं उम्मीद कर रहा था कि कॉन्फ़िगर या ConfigObject में एक प्रकार की "flatten" विधि हो सकती है। असल में, मैं अपने कॉन्फ़िगर ऑब्जेक्ट से एक कफका उपभोक्ता को कॉन्फ़िगर करना चाहता हूं, और कफका उपभोक्ता गुणों को तर्क के रूप में लेता है; तो मुझे कम या ज्यादा यकीन है कि उपभोक्ता को जाने वाली मेरी कॉन्फ़िगरेशन का हिस्सा घोंसला नहीं होगा। –