मेरे पास यह परिदृश्य है। मैं स्प्रिंग बूट के साथ एक आरईएसटी सेवा विकसित कर रहा हूं और मेरे पास एक निर्भरता जार है जो एक और स्प्रिंग बूट प्रोजेक्ट है जिसे मैंने इस विधि का उपयोग करके निर्भरता के रूप में शामिल किया है:

https://docs.spring.io/spring-boot/docs/2.1.4.RELEASE/maven-plugin/examples/repackage-classifier.html

सब कुछ पूरी तरह से संकलित है और मैं निर्भरता जार से कक्षाओं को कॉल कर सकता हूं। निर्भरता जार में कोड के अंदर मैं "पिता" परियोजना के application.properties से मूल्यों को पढ़ने के लिए @Value एनोटेशन का उपयोग करता हूं, लेकिन यह हमेशा शून्य हो जाता है।

अगर मैं पिता परियोजना से उसी मूल्य को पढ़ने की कोशिश करता हूं तो यह काम करता है।

अजीब डबल गुण फ़ाइल से बचने के लिए, मैंने निर्भरता जार के अंदर मूल application.properties फ़ाइल को हटा दिया, लेकिन कुछ भी नहीं बदलता है।

इस समस्या को कैसे हल किया जाए इस पर कोई विचार?

अग्रिम में धन्यवाद।

0
CSoft 27 मार्च 2020, 21:55

3 जवाब

मैं दो विकल्पों के बारे में सोच सकता हूं जिन्हें आप आजमा सकते हैं।

#1

@PropertySources एनोटेशन में पैरेंट application.properties को शामिल करने का प्रयास करें। आपको यह सुनिश्चित करना पड़ सकता है कि गुण फ़ाइल दो अनुप्रयोगों के बीच भिन्न है। इसका अधिक वर्णन इस उत्तर में किया गया है।

#2

एक कॉन्फ़िगरेशन प्रॉपर्टी क्लास रखने के लिए पैरेंट प्रोजेक्ट सेट करें जिसे आप अपने एप्लिकेशन में इंजेक्ट कर सकते हैं, और आवश्यक गुण पुनर्प्राप्त कर सकते हैं।

मूल परियोजना में इस तरह की एक कक्षा हो सकती है:

@Data // Part of the Lombok project, creates the getters/setters automatically
@ConfigurationProperties(prefix = "application.specific.prefix")
public class ApplicationConfig {
    private String someValue;
    private Integer importantNumber;
}

आपका application.properties इस तरह दिखेगा:

application.specific.prefix.some-value=Spring Boot is great!
application.specific.prefix.important-number=42

अपने वसंत नियंत्रित कक्षाओं में आप इस संसाधन को इसके साथ शामिल कर सकते हैं:

@Autowired
private ApplicationConfig applicationConfig;

और फिर आप उन संपत्तियों को कॉल कर सकते हैं जिनकी आपको आवश्यकता है:

applicationConfig.getSomeValue();

Baeldung के पास इसके लिए एक सहायक मार्गदर्शिका है @ConfigurationProperties

0
mnd 27 मार्च 2020, 22:13

हल किया। आपकी प्रतिक्रिया के लिए धन्यवाद मन्द!

मैंने समस्या हल की और यहां समाधान लिखा, शायद यह किसी और के लिए उपयोगी हो सकता है।

सबसे पहले, मैंने एक मूर्खतापूर्ण गलती की, मैं बीन को @Autowired के नीचे रखना भूल गया! :-डी

लेकिन एक और काम करना है, पेरेंट प्रोजेक्ट को डिपेंडेंसी बीन्स को ऑटोवायर बनाने के लिए, हमें इसके पैकेज को पेरेंट प्रोजेक्ट के कॉन्फिग क्लास में @ComponentScan के साथ जोड़ना होगा।

इसके बाद, मूल परियोजना के सभी गुणों को निर्भरता बीन्स में सही ढंग से इंजेक्ट किया जाता है।

धन्यवाद।

सादर।

0
CSoft 28 मार्च 2020, 15:57

इस समस्या का समाधान इस पोस्ट में किया गया था। यदि आप मेवेन का उपयोग कर रहे हैं तो डिफ़ॉल्ट (जार) के उपयोग के लिए अपने मुख्य pom.xml से <package> टैग को हटाने का प्रयास करें और स्प्रिंग-बूट लोड और संसाधनों को पढ़ने के लिए कहें।

मावेन जीवनचक्र संदर्भ के बारे में अधिक जानकारी यहां

0
AlanGarciaC 20 फरवरी 2021, 06:29