मेरे पास कई वर्ग हैं जिन्हें कुछ गुण फ़ाइलों को लोड करने की आवश्यकता है, और मैं सोच रहा था कि इसे पूरा करने के लिए सर्वोत्तम अभ्यास क्या हैं। मैं दो बुनियादी दृष्टिकोण के बारे में सोचा:गुण लोड करने के लिए सबसे अच्छी रणनीति क्या है?
Hardcode गुण प्रत्येक वर्ग में फ़ाइल नाम, और फिर एक
FileInputStream
से लोड करने के लिए है, जो समस्या हो सकती है किसी के गुणों फ़ाइल का नाम बदलने का फैसला करता है, तोProperties
वर्ग का उपयोग , क्योंकि यह कोड में हार्डकोड किया गया है।public class A { public A() { Properties p = new Properties().load( new FileInputStream("properties/Aconfig.properties")); String value = p.getProperty("key", ""); } }
एक विधि है कि, एक वर्ग के नाम को देखते हुए लोड करता है वर्ग के रूप में एक ही नाम है कि एक गुण फ़ाइल बनाएँ। यद्यपि इस दृष्टिकोण को गुण फ़ाइल नाम को हार्डकोड करने की आवश्यकता नहीं है, लेकिन यह आवश्यक है कि हम फ़ाइलों को नाम देने में कुछ सम्मेलन का पालन करें, जो भ्रम पैदा कर सकता है।
public class A { public A() { Properties p = PropertiesHelper.loadFromClassName(A.class.getName()); // here, we **assume** that there is a A.properties file in the classpath. } }
हालांकि, कई अन्य अधिक सुरुचिपूर्ण दृष्टिकोण हो सकता है, और यही कारण है मैं इन सवाल पूछे है: i) जावा में लोड हो रहा है गुण फ़ाइलों के लिए सर्वोत्तम प्रथाओं हैं ?; ii) क्या आप किसी भी सहायक वर्ग का उपयोग करते हैं जो नौकरी का ख्याल रखता है ?; iii) कहां (कोड में) क्या आप आमतौर पर गुण फ़ाइल लोड करते हैं?
साथ ही, क्या कक्षा के लिए अपनी संपत्तियों को "स्वतः लोड" करना ठीक है? या मुझे उन तर्कों को पारित करना चाहिए जिन्हें मुझे निर्माता को चाहिए? तर्कों को पारित करने की समस्या यह है कि कुछ वर्गों के लिए बहुत कुछ रास्ता है (~ 20, जो एक सांख्यिकीय मॉडल में पैरामीटर का प्रतिनिधित्व करते हैं)।
हां:), मैं उस विशेष समस्या के लिए एसएफ का उपयोग करने पर विचार कर रहा हूं। हालांकि, इसके लिए, मैं चाहता हूं कि गुण फ़ाइलों को आसानी से कॉन्फ़िगर किया जा सके/हर किसी के द्वारा बदला जा सके (आवश्यक रूप से कंप्यूटर प्रोग्रामर नहीं), इसलिए एक सरल "कुंजी = मान"-आधारित फ़ाइल स्कीमा की आवश्यकता है। –
आप अभी भी बहुत कुछ कर सकते हैं। वसंत में एक बहुत अच्छा संसाधन अबास्ट्रक्शन लेयर है: http://static.springsource.org/spring/docs/2.5.x/reference/resources.html जो आपको उन वर्ग फ़ाइलों को "जैसा है" के साथ आपकी कक्षाओं को टाइप किए बिना सौदा करने देगा उन्हें सीधे। – ChssPly76
हम्म, मैं इसके बारे में पढ़ने जा रहा हूं, धन्यवाद। मैंने सोचा कि आप तत्व के अंदर संदर्भित कर रहे थे। आपके प्रश्न के लिए, मैं मूल रूप से इसमें कई मॉडल पैरामीटर संग्रहीत करता हूं (उदा।, संख्याऑफट्रियल = 50, एट कैटर [संख्यात्मक मान])। –