2012-05-29 17 views
18

मैं जावा में एक स्थिरांक फ़ाइल और गुण फ़ाइल का उपयोग करने के बीच थोड़ा उलझन में हूं।जावा में गुण फ़ाइल बनाम कॉन्स्टेंट क्लास

कैसे तय करने के लिए जब Constants.java उपयोग करने के लिए और जब एक .properties फ़ाइल उपयोग कैसे करें?

+1

परपहस आप [ListResourceBundle] (http://docs.oracle.com/javase/7/docs/api/index.html?java/util/ListResourceBundle.html) का उपयोग कर दोनों दुनिया के सर्वश्रेष्ठ हो सकते हैं –

उत्तर

23

पर अपने जावा कोड में हार्डवार्ड स्थिरांक का उपयोग करें, तो आप उपयोगकर्ता/नियोक्ता/परीक्षक/परीक्षणों को बदलने के लिए नहीं चाहते हैं।

पर गुण फ़ाइल का उपयोग करें, तो आप यह संभावना होने के लिए चाहते हैं।

बिंदु यह है कि आपके एप्लिकेशन के स्रोत कोड में हार्ड-वायर्ड स्थिरता को बदलने से स्रोत कोड, पुनर्निर्माण और पुनर्वितरण को संपादित करना आवश्यक है। इसके विपरीत, गुण फ़ाइल को बदलना नोटपैड को फायर करने के समान सरल हो सकता है।

+0

आपने कहा कि बदलती गुण फ़ाइल सरल है जबकि स्थिरांक फ़ाइल बदलने के लिए हमें एप्लिकेशन को पुनर्निर्माण करने की आवश्यकता होती है। तो, क्या हम हमेशा गुण फ़ाइल का उपयोग करना पसंद नहीं करते हैं? – Anand

+3

पहली वाक्य पढ़ें ... –

1
  • स्थिरांक - जब आप फिर से संकलन आवेदन हर बार जब आप मूल्य बदल आपत्ति नहीं है। यहां एक विडंबना का क्रमबद्ध करें। अगर यह एक निरंतर :)

  • गुण फ़ाइल बुलाया गया है क्यों आप कुछ बदल जाएगा - जब आप सिर्फ मूल्य बदल रहा है और हो सकता है आवेदन परिवर्तन लेने के लिए पुन: प्रारंभ करने के लक्जरी चाहते हैं।

1

आम तौर पर, एक स्थिरांक वर्ग में कुछ भी "हार्डकोड" माना जाता है; यानी, आपको परिवर्तन करने के लिए फिर से संकलित करने की आवश्यकता है।

कॉन्फ़िगरेशन जैसी चीजों के लिए .properties फ़ाइल का उपयोग करें, जहां आपको केवल बदलाव करने के लिए फिर से संकलित करने के लिए मजबूर नहीं होना पड़ेगा। इस तरह, आप केवल गुण फ़ाइल को बदल सकते हैं और अपने एप्लिकेशन को पुनरारंभ कर सकते हैं।

1

जब आप तैनाती से तैनाती या समय के साथ भिन्न पैरामीटर निर्दिष्ट करना चाहते हैं तो आप आम तौर पर संपत्ति फ़ाइलों का उपयोग करते हैं।

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

1

विचार करने के लिए कई अलग-अलग पहलू हैं। सबसे महत्वपूर्ण यह है कि

  • आप गुण फ़ाइलों को संपादित कर सकते हैं और अपने आवेदन को फिर से संकलित किए बिना इसका उपयोग कर सकते हैं;
  • गुण फ़ाइलों में कोई कोड नहीं है, इसलिए हर कोई उन्हें बिना किसी जावा ज्ञान के बदल सकता है।

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

दूसरी ओर, स्थिरांक वर्गों को संकलित करने की आवश्यकता है, लेकिन यदि आप उन स्थिरांक को अक्सर नहीं बदलना चाहते हैं तो "सुरक्षित" हैं।

1

कॉन्स्टेंट संकलन समय में तय किए गए हैं। इसलिए यदि आप मूल्यों के किसी भी बदलाव की पूर्ववत नहीं करते हैं तो कॉन्स्टेंट अच्छा विचार होगा।

0

गुणों का बाहरीकरण होने का लाभ है। आपके पास विकास के लिए एक संपत्ति फ़ाइल हो सकती है, दूसरा परीक्षण के लिए और दूसरा उत्पादन के लिए। हालांकि, कई बार, शायद ही कभी बदले गए गुण, जो कि सॉफ़्टवेयर के कामकाज के लिए आंतरिक हैं, उन्हें गुण फ़ाइल में डाल दिया जाता है जिससे उन्हें प्रबंधित करना मुश्किल हो जाता है।

ओटीओएच स्थिरांक संकलित किए गए हैं इसलिए संकलन समय पर कोई भी त्रुटि पकड़ी जाएगी।

तो जवाब है, यह निर्भर करता है। यदि गुणों में मान वास्तव में कॉन्फ़िगरेशन परिवर्तन हैं, तो आप बाहरीकरण करना चाहते हैं, फिर गुण फ़ाइल का उपयोग करें। अन्यथा उन्हें जावा स्थिरांक बनाते हैं। हालांकि, आप दोनों का उपयोग कर समाप्त हो सकता है।

5

मेरे जांच सूची

संपत्ति फ़ाइल:

यह environemnt प्रति विन्यास आदि

संदेश, लेबल आदि

लागू विशेष स्थिति के लिए (राज्यों के नियमों के लिए सूची है आदि)। कुंजी-मूल्य जोड़े। डेवलपर यानी, विश्लेषकों, व्यापार उपयोगकर्ताओं आदि के अलावा अन्य किसी के द्वारा संशोधित किया जा सकता है

लगातार:

स्थिरांक हैं। विन्यास योग्य नहीं है। अधिकतर अनुकूलन और पुन: उपयोग के लिए। बिखरी हुई चाबियों से बचने के लिए।

YES = "yes" जैसे स्थिरांक के लिए। वास्तव में एक महत्वपूर्ण मूल्य नहीं है। कैश आदि के लिए कुंजी

स्थिरता सुनिश्चित करने के लिए कि अनुप्रयोग में विभिन्न स्थानों से पुनर्प्राप्ति और सेट एक ही कुंजी का उपयोग करें, EXAMPLE xyz.put (KeyConstants.SOME_KEY, "somevalue"); विभिन्न कक्षाओं से xyz.get (KeyConstants.SOME_KEY), xyz साझा या सिंगलटन हो रहा है।

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