هل يمكن لـ Spring فهم inject استبدال اللحام كتطبيق JSR-299؟

StackOverflow https://stackoverflow.com/questions/3055724

سؤال

لقد لاحظت من العديد من صفحات الويب التي يبدو أن Spring 3.0 يدعم inject من JSR-330. نظرًا لأننا نود حقًا استخدام بناء جملة JSR-299 لحقن التبعية في مكتباتنا لكل من تطبيقات الويب والتطبيقات المستقلة ، ولدينا بدائل لللحام ، سيكون من الجيد أن يتمكن الربيع من القيام بذلك.

كوني مبتدئًا في الربيع ، حاولت تنزيل توزيع إطار عمل الربيع ووضع جميع الجرار على مسار بناء الكسوف. لا تعليق الحقن ، لذا لم يتم تجميع مشروع الاختبار الحالي الذي يستخدمه.

هل يمكن القيام بذلك مع الربيع؟ ما الذي يجب علي فعله لتشغيله؟

(أنا أدرك أن Guice ستدعم هذا أيضًا أيضًا. إنه في SVN فقط في الوقت الحالي ، وإذا كان هناك إصدار ربيعي رسمي يمكن ، فسيكون ذلك أفضل.)


يمكن إنجازه. يجب تنزيل جرة JSR-330 بشكل منفصل ، و CGLIB لتحليل فصول التكوين المكتوب يدويًا ، بالإضافة إلى تنفيذ تسجيلات العموم.

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

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

المحلول

من الربيع 3.0.x الوثائق المرجعية:

يمكن استخدام التعليق التوضيحي لـ JSR 330 inject بدلاً من spring @autowired في الأمثلة أدناه. لا يحتوي inject على خاصية مطلوبة على عكس شرح AutOwire الخاص بـ Spring الذي يحتوي على خاصية مطلوبة للإشارة إلى ما إذا كانت القيمة التي يتم حقنها اختياريًا. يتم تمكين هذا السلوك تلقائيًا إذا كان لديك جرة JSR 330 على ClassPath.

لذلك يمكنك جعل الكود الخاص بك غير مؤلف من إطار عمل DI باستخدام inject javax.inject الفصول الدراسية في مشروعك لأن الربيع لا يشحنها بنفسها. يمكنك العثور على الجرة ذات الصلة في قسم التنزيلات على موقع رمز Google من JSR-330.

نصائح أخرى

ال javax.inject لا يتم تضمين الحزمة كجزء من ربيع 3 ، لكنها تدعمها في حالة وجودها.

إذا نظرت إلى المصدر AutowiredAnnotationBeanPostProcessor, ، سترى أن المنشئ يستخدم انعكاسًا لتحديد موقعه javax.inject.Inject, ، ويسجل رسالة إذا وجدها. لا يوجد اعتماد وقت الترجمة على ذلك.

ستحتاج إلى تحديد موقع الجرار JSR-330 من مصدر آخر (على سبيل المثال Javaee 6 SDK).

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