2015-06-17 6 views
12

मेरे वसंत-बूट प्रोजेक्ट में मेरे पास एक गुण श्रेणी है।स्प्रिंग-बूट: कॉन्फ़िगर करने योग्य गुणों के लिए डिफ़ॉल्ट मान सेट करें

@Component 
@ConfigurationProperties(prefix = "myprefix") 
public class MyProperties { 
    private String property1; 
    private String property2; 

    // getter/setter 
} 

अब, मैं property1 के लिए मेरे application.properties फ़ाइल में कुछ अन्य संपत्ति के लिए डिफ़ॉल्ट मान सेट करना चाहते हैं। क्या उदाहरण नीचे @value

@Value("${myprefix.property1:${somepropety}}") 
private String property1; 

मैं जानता हूँ कि हम सिर्फ जहां "डिफ़ॉल्ट मान" property के लिए डिफ़ॉल्ट मान के रूप में निर्दिष्ट किया जाता है कि नीचे उदाहरण में की तरह स्थिर मूल्य प्रदान कर सकते हैं, का उपयोग करता है

@Component 
@ConfigurationProperties(prefix = "myprefix") 
public class MyProperties { 
    private String property1 = "default value"; // if it's static value 
    private String property2; 

    // getter/setter 
} 

कैसे करें के समान वसंत बूट में @ कॉन्फिगरेशनप्रॉपर्टीज क्लास (बल्कि टाइपएफ़ कॉन्फ़िगरेशन गुण) का उपयोग करके ऐसा करें जहां मेरा डिफ़ॉल्ट मान एक और संपत्ति है?

+0

कृपया, यह प्रश्न देखने के: [http://stackoverflow.com/questions/29220498/why-is-configurationproperties-not-overriding-defaults-in-my-case](http://stackoverflow। कॉम/प्रश्न/2 9 220498/क्यों-है-कॉन्फ़िगरेशनप्रॉपर्टीज-नहीं-ओवरराइडिंग-डिफ़ॉल्ट-इन-माय-केस) –

उत्तर

5

जांचें कि क्या संपत्ति 1 आपके MyProperties क्लास में @PostContruct का उपयोग करके सेट की गई थी। यदि यह नहीं था तो आप इसे किसी अन्य संपत्ति को सौंप सकते हैं।

@PostConstruct 
    public void init() { 
     if(property1==null) { 
      property1 = //whatever you want 
     } 
    } 
+2

इसने मेरी समस्या को हल किया। लेकिन, मुझे लगता है कि वसंत को @Value की तरह ही समर्थन प्रदान करना चाहिए। –

+0

मैं डिफ़ॉल्ट रूप से सेट करने के तरीके पर खोज कर रहा था और यह एकमात्र उत्तर था जो मुझे मिल सकता था .. लेकिन [इस विकी पर] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot- कॉन्फ़िगरेशन-बाइंडिंग # डिफ़ॉल्ट-मान) ऐसा लगता है कि आप अपनी संपत्ति के लिए डिफ़ॉल्ट मान सेट कर सकते हैं जैसे आप उम्मीद करेंगे। – evandongen

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