سؤال

أنا في عملية استئصال كل ضمنية القيم في جافا مكتبة أتساءل ما هو الإطار سيكون أفضل (من حيث صفر أو قريبة من الصفر التكوين) للتعامل مع وقت تشغيل التكوين ؟ وأود أن تفضل يستند إلى XML ملفات التكوين ، ولكن ليس من الضروري.

يرجى الرد فقط إذا كان لديك الخبرة العملية مع الإطار.أنا لا أبحث عن أمثلة ، ولكن التجربة...

هل كانت مفيدة؟

المحلول

إذا كان الخاص بك ضمنية القيم بسيطة فقط أزواج قيمة المفتاح, يجب أن ننظر في java.util.خصائص.الأمر أبسط كثيرا من xml ، الأسهل استخدام العقل بتخدير تافهة لتنفيذ.

إذا كنت تعمل مع جافا و البيانات التي يتم تخزينها أو استرداد من القرص غرار كقيمة رئيسية الزوج (الذي يبدو أنه في هذه الحالة) ، ثم أنا حقا لا أستطيع تخيل حل أفضل.

لقد استخدمت خصائص ملفات بسيطة تكوين مجموعات صغيرة في مشروع أكبر و أكثر عالمية التكوين عن المشروع بأكمله, و لم يكن لدي مشاكل معها.

بالطبع هذا له فائدة كبيرة لا تتطلب أي 3rd الطرف المكتبات للاستفادة.

نصائح أخرى

أباتشي العموم التكوين يعمل كبيرة.وهو يدعم وجود التكوين المخزنة في مجموعة واسعة من الأشكال على الخلفية بما في ذلك خصائص, XML, JNDI ، وأكثر من ذلك.فمن السهل أن استخدام تمديد.للحصول على أكثر مرونة من ذلك استخدام مصنع للحصول على التكوين فقط استخدام واجهة التكوين بعد ذلك.

اثنين ميزة العموم التكوين التي تميز على التوالي خصائص الملف هو أنه دعم التحويل التلقائي إلى الأنواع الشائعة (int, float, صفائف سلسلة) و يدعم خاصية الاستبدال:

server.host=myHost
server.url=http://${server.host}/somePath

هنا خيارات مختلفة:

قد ترغب في قراءة مقارنة العموم التكوين مع JFig و JConfig و تكوين التطبيقات الخاصة بك باستخدام JFig للحصول على بعض ردود الفعل من مختلف المستخدمين.

أنا شخصيا قد استخدمت jConfig و كانت تجربة جيدة.

المشاع التكوين

نحن نستخدم هذا.خصائص الملفات وحدها هي أسهل بكثير من التعامل معها ، ولكن إذا كنت بحاجة إلى تمثيل البيانات أكثر تعقيدا العموم التكوين يمكن أن تفعل هذا و قراءة خصائص الملفات كذلك.

إذا كنت لا تفعل أي شيء معقد انا ساتمسك properites الملفات.

إذا كنت تريد أن تفعل شيئا المتقدمة (و typesafe) ، قد ترغب في إلقاء نظرة على هذا: http://www.ibm.com/developerworks/java/library/j-configint/index.html

ذكي المعلمة استخدام أداة (المدخلات ، الصفحة) يسمح تخريج تقريبا أي (الثابت ترميز) قرار كمعلمة في XML القائمة على ملف التكوين. وقد بدأت في أوائل عام 2012 ردا على أوجه القصور في القائمة أدوات التكوين فيما يتعلق عمومية, وفصل من الشواغل.

المدخلات هي اقوى من استخدام معظم الحالات تتطلب ، كما أنه يسمح لغة برمجة مستقلة صياغة البيانات التجريبية (المدخلات والمخرجات), مع ميزات مثل تعريف مجمع واصف إلى الدرجة تعيينات, أو العشوائية التكوين التفريخ و المصادقة على أساس قيمة محددة مسبقا نطاقات (اختبار والبحوث ، على سبيل المثالمحاكاة مونت كارلو).يمكنك تعريف المعلمات على بند معلمات النسبية القيود المفروضة على قيم المعلمات (العددية المعلمة a > المعلمة ب) الخ..

لا يزال في مرحلة تجريبية ، وإنما مستقرة ، أنا استخدامها على بلدي البحوث ، تكوين و توثيق التجارب ، لأغراض التدريس.بمجرد أن يتوفر عن اللغات الأخرى (C++ محول في الأنابيب) ، وغيرهم من الباحثين/الممارسين يمكن إعادة استخدام واصفات تشغيل تطبيقات من نفس الخوارزميات في C++ (باستخدام كود الخرائط المفاهيمية).هذا الطريق ، النتائج التجريبية يمكن التحقق من صحة/برامج يمكن ترحيل أكثر سهولة.الوثائق لا تزال في عملية العمل ، ولكن اثنين من أمثلة المتاحة على الصفحة.المدخلات مفتوحة المصدر البرمجيات.

للراغبين ، البحث النظري الورق.

أنا أميل إلى استخدام java.util.Properties (أو مماثلة دروس في لغات أخرى و الأطر) ملفوفة في تطبيق محددة التكوين الدرجة معظم الوقت, ولكن أنا مهتم جدا في بدائل أو تنويعات على هذا.خصوصا أن الأمور يمكن أن تصبح صعبة بعض الشيء إذا الرسومية التكوين الحوارات أو وجهات نظر متعددة على بيانات التكوين المعنية.

للأسف ليس لدي أي خبرة محددة مكتبات جافا (إلا مع تلك التي كنت قد كتبت على نفسي) ، ولكن أي مؤشرات سيكون موضع تقدير.

التحديث

موافق.هذا لم يكن صحيحا تماما, ثلاثة هي الربيع جافا التكوين المشروع.

أنا كتب عن هذا منذ بضعة أسابيع وجاء إلى استنتاج مفاده أن XML هي واحدة من الأكثر استخداما على نطاق واسع الرموز.

هل هو الأفضل ؟ لا أعتقد ذلك, أنا حقا مثل سلمان ، ولكن هذه الأدوات لا تزال لا تصل إلى XML لذا أعتقد أن علينا أن ننتظر ونرى.

يمكنك محاولة YamlBeans.بهذه الطريقة يمكنك كتابة ما الفئات التي تريد عقد التكوين البيانات, ثم يمكنك تلقائيا كتابة و قراءة و YAML.

YAML هو الإنسان للقراءة تنسيق البيانات.وقد أكثر تعبيرا من جافا.util.خصائص.يمكنك الحصول على قوائم, خرائط, المراسي, كتابة البيانات ، إلخ.

يرجى إلقاء نظرة على هذا الرابط: http://issues.apache.org/jira/browse/CONFIGURATION-394

تكوين الإطار الذي نبحث عنه هو شيء على أعلى من أباتشي العموم التكوين و يجب أن يدعم التزامن القضايا ، JMX القضايا الأكثر من متجر(هـ.ز .خصائص الملف .ملفات xml أو PreferencesAPI).

ما يبلوغيتش فريق تنص على 'وحدة تحكم الإدارة هو يضيع التي من خلالها يمكنك الحصول على المعاملات(الذرية) التحديثات على تكوينات بحيث يتم تسجيل المستمعين أن يتم إعلامك.

أباتشي الرجال يصرون على أن هذا المشروع هو من نطاقات العموم التكوين ، ربما!

لقد تعلق بسيط التكوين الإطار نلقي نظرة من فضلك.

أنا مجرد نشر قليلا قصيرة رمز حول استخدام الربيع ClassPathResource كبديل اللجنة الأولمبية الدولية.ClassPathResource يسمح لك لوضع المنشأة الملفات في أي مكان على classpath (على سبيل المثال ، كل ذلك في مكان واحد ، أو أقرانهم إلى رمز تكوين.بلدي على سبيل المثال فقط يستخدم جافا.util.خصائص لذا يمكنك استخدام نص عادي "name=قيمة" نمط أو تنسيق XML.

خصائص ملفات بسيط جدا, إذا كنت بحاجة إلى شيء أكثر وظيفية ، يمكنك تنسيق بعض ملفات التكوين الخاصة بك كما فئات Java.هذه يمكن وضعها في حزمة/وحدة نمطية يمكن المترجمة مسبقا أو تحميلها في وقت التشغيل مع مكتبة مثل BeanShell.

ملاحظة:في أبسط الحالات (قبل تجميعها) أنت لا تحتاج إلى أي مكتبات إضافية.

بخصوص اقتراحات لاستخدام جافا.util.خصائص - البدء في jdk 1.5 ، تفضيلات API (جافا.util.بادئات) ويبدو أن البديل المفضل استخدام خصائص API.

الأسباب:زيادة قابلية ، الحياد ، إلخ.

هل يمكن أن يكون نظرة أعلنت حديثا tools4j-config مهمتها بيان أن تسمح لك بسهولة التعامل مع التكوين في وقت التشغيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top