2014-06-11 3 views
24

typesafe को मैं typesafe config का उपयोग कर रहा & मेरी संसाधन निर्देशिका में कॉन्फ़िग फ़ाइल जो इस तरह दिखता है:स्काला: मूल्य लिखें config वस्तु

something { 
    another { 
    someconfig=abc 
    anotherconfig=123 
    } 
} 

मैं स्केला का उपयोग कर anotherconfig का मूल्य कैसे बदल सकता है?

उत्तर

54

आप भरी हुई config (यानी एक नया वर्ष पर आधारित config बनाने) में परिवर्तन करना चाहते हैं, तो आप withValue उपयोग कर सकते हैं:

val newConfig = oldConfig.withValue("something.another.anotherconfig", 
    ConfigValueFactory.fromAnyRef(456)) 
5

आप के बाद से मूल कॉन्फ़िग वस्तु में एक मूल्य ओवरराइट नहीं कर सकते यह अपरिवर्तनीय है। आप क्या कर सकते हैं मूल रूप से फ़ॉलबैक के रूप में उपयोग करके, अपने मानों के साथ एक नया कॉन्फ़िगर ऑब्जेक्ट बनाएं। तो:

val myConfig = ConfigFactory.parseString("something.another.anotherconfig=456") 
val newConfig = myConfig.withFallback(oldConfig) 

और फिर अपने मूल कॉन्फ़िगर के बजाय हर जगह newConfig का उपयोग करें।

val myConfig = ConfigFactory.load("local") 
val oldConfig = ConfigFactory.load 
val realConfig = myConfig.withFallback(oldConfig) 

फिर आप एक प्रणाली संपत्ति इस्तेमाल कर सकते हैं स्थापित करने के लिए जहां से myConfig लोड करने के लिए: एक और अधिक maintainable विकल्प अपने परिवर्तनों और उपयोग के साथ एक 2 कॉन्फ़िग फ़ाइल के लिए किया जाएगा।

संबंधित मुद्दे