मैं भी आधिकारिक उत्तर जानना चाहता हूं, लेकिन किसी ने जवाब नहीं दिया इसलिए मैंने चारों ओर पोक करने का फैसला किया। क्षमा करें अगर यह उत्तर काफी व्यापक नहीं है।
मुझे मिला सबसे अच्छा उदाहरण com.twitter.ostrich.admin.RuntimeEnvironment
में था, खासकर यदि आप मुख्य रूप से loadConfig
पर देखते हैं।
कहें कि आप कक्षा T
के एक उदाहरण को कॉन्फ़िगर करना चाहते हैं। मूल विचार इस प्रकार है:
- एक
java.io.File
कि स्काला स्रोत कोड है कि एक com.twitter.util.Config[T]
का मूल्यांकन शामिल हो जाओ।
- मान्य
Config[T]
होने के लिए आपको def apply(): T
विधि की आवश्यकता होगी। कॉन्फ़िगरेशन फ़ाइल से कार्यान्वयन विवरण को रखने के लिए, आप अपनी प्रोजेक्ट में एक कक्षा को परिभाषित करना चाहेंगे जो Config[T]
तक फैली हुई है। आप डिफ़ॉल्ट/आवश्यक फ़ील्ड को परिभाषित करने के लिए इस कक्षा का भी उपयोग कर सकते हैं।
com.twitter.util.Eval
इंस्टेंस को इंस्टेंट करें, और Config[T]
उदाहरण प्राप्त करने के लिए apply(file)
पर कॉल करें।
- दुर्भावनापूर्ण कॉन्फ़िगरेशन फ़ाइलों के लिए उचित अपवाद फेंकने के लिए
config.validate()
पर कॉल करें।
- पर कॉल करें
T
का अपना पूर्ण रूप से कॉन्फ़िगर किया गया उदाहरण प्राप्त करने के लिए। यहाँ class WidgetService(val port: Int)
class WidgetConfig extends com.twitter.util.Config[WidgetService] {
var port = required[Int]
def apply(): WidgetService = {
new WidgetService(port)
}
}
object MyApp extends App {
val configFile = new java.io.File("mywidget_config.scala")
val eval = new com.twitter.util.Eval
val config = eval[com.twitter.util.Config[WidgetService]](configFile)
config.validate()
val widgetService = config()
println(widgetService.port)
}
और mywidget_config.scala
है:
यहाँ एक सरल उदाहरण है, जहां मैं एक नया WidgetService
कॉन्फ़िगर
new WidgetConfig {
port = 8000
}
नोट: यदि आप यदि आप इस डाल संशोधन करने के लिए हो सकता है एक पैकेज में मैंने ब्रेवटी के लिए डिफ़ॉल्ट पैकेज में सबकुछ किया।
निर्भरता काम करने के लिए प्राप्त करने के लिए, मैं अपने एसबीटी config को यह कहा:
libraryDependencies += "com.twitter" % "util" % "1.10.1"
मैं 'Configgy' के लिए एक स्थानापन्न लिखा था। यह अधिकांश विरासत कॉन्फ़िगरेशन फ़ाइलों, अक्का कॉन्फ़िगरेशन फ़ाइलों और जावा गुणों के साथ संगत है। यह https://github.com/paradigmatic/Configrity – paradigmatic