2012-04-19 23 views
10

क्या किसी को पता है कि स्प्रिंग में कोई एक्सटेंशन है जो एक्सएमएल के बजाय जेएसओएन (या वास्तव में कोई अन्य प्रारूप) के माध्यम से अपने एप्लीकेशन कॉन्टेक्स्ट को कॉन्फ़िगर करने की अनुमति देता है? मुझे आधिकारिक दस्तावेज़ों में कुछ भी नहीं मिला, लेकिन मैं सोच रहा था कि क्या कोई अन्य ओपन सोर्स एक्सटेंशन था जो इसे अनुमति दे सकता था।क्या वसंत समर्थन JSON कॉन्फ़िगरेशन करता है?

बस स्पष्ट होने के लिए, मैं एक विश्वसनीय JSON- आधारित वेब सेवा या ऐसा कुछ भी स्थापित करने के लिए SpringMVC को कॉन्फ़िगर करने के बारे में बात नहीं कर रहा हूं, अगर एक्सएमएल के बजाय जेएसओएन के माध्यम से स्प्रिंग ऐप कॉन्फ़िगरेशन करना संभव है।

उत्तर

5

जहां तक ​​मुझे पता है कि JSON को कॉन्फ़िगरेशन स्रोत के रूप में समर्थन करने के लिए कोई प्रोजेक्ट नहीं है। इसे किक-स्टार्ट करने के लिए अपेक्षाकृत आसान होना चाहिए, (स्प्रिंग कंटेनर की एक्सएमएल पर कोई निर्भरता नहीं है, यह बीन परिभाषाओं का निर्माण करने का एक तरीका है)। हालांकि यह आपके विचार से कहीं अधिक काम है।

ध्यान दें कि वसंत सही XML लिखने में आपकी सहायता के लिए प्रदान करता है। आपको जेएसओएन में उतना अधिक नहीं मिलेगा। स्प्रिंग एक्सएमएल और कस्टम नेमस्पेस सपोर्ट (, और अन्य इसका उपयोग करते हुए भी कई डीएसएल बनाए गए थे)।

@Configuration 
public class MyBeans { 

    @Bean 
    public Foo foo() { 
     return new Foo(); 
    } 

    @Bean 
    public Bar bar() { 
     return new Bar(foo()); 
    } 

    @Bean 
    public Buzz buzz() { 
     Buzz buzz = new Buzz(); 
     buzz.setFoo(foo()); 
     return buzz; 
    } 

} 

रोचक तथ्य: भी धन्यवाद कुछ फैंसी प्रॉक्सी के लिए, foo() एक बार यहाँ वास्तव में कहा जाता है,

आप एक्सएमएल (कई करते हैं) से नफरत करते हैं, तो बाहर जावा विन्यास, 3.0 के बाद से उपलब्ध और बेहतर 3.1 में कोशिश हालांकि दो बार संदर्भित किया गया।

+0

धन्यवाद। मान लीजिए मैं एनोटेशन पर टिकने की कोशिश करूंगा। वास्तव में * नफरत * एक्सएमएल प्रति से नफरत नहीं है, लेकिन मुझे कुछ विकल्प होना अच्छा लगेगा। – donalbain

3

मैवेन सेंट्रल पर उपलब्ध JSConf लाइब्रेरी का प्रयास करें, यह समर्थन गुण, होकॉन और जेएसओएन प्रारूप है।

आप बाहरी फ़ाइल से मूल्यों को अपनी सेवा में इंजेक्ट कर सकते हैं और और भी बहुत कुछ! JavaConfig की

नमूना उपयोग:

आप फ़ाइल app.conf पर संग्रहीत डेटा

{ 
"root":{ 
"simpleConf":{ 
    "url":"Hello World", 
    "port":12, 
    "aMap":{ 
     "key1":"value1", 
     "key2":"value2" 
    }, 
    "aList":[ 
     "value1", 
     "value2" 
    ] 
}} 

आप सेवा है जहाँ आपके विन्यास इंजेक्षन किया जाना चाहिए

@Service("service") 
public class Service { 
    @Autowired 
    private ConfigBean configBean; 
} 

उपयोग करने के लिए एक इंटरफेस घोषित आपकी सेवा से आपकी कॉन्फ़िगरेशन मान

@ConfigurationProperties("root/simpleConf") 
public interface ConfigBean { 
    String getUrl(); 
    int getPort(); 
    Map getAMap(); 
    List getAList(); 
} 

और अपने स्प्रिंग विन्यास सेम:

@Configuration 
public class ContextConfiguration { 
    @Bean 
    public static ConfigurationFactory configurationFactory() { 
     return new ConfigurationFactory().withResourceName("app.conf") // 
       .withScanPackage("org.jsconf.core.sample.bean"); 
    } 
} 

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

  • कोई संबंधित समस्या नहीं^_^