logo

التوصيل التلقائي في الربيع

تمكنك ميزة التوصيل التلقائي لإطار عمل الربيع من حقن تبعية الكائن ضمنيًا. يستخدم حقن الواضع أو المنشئ داخليًا.

لا يمكن استخدام التوصيل التلقائي لإدخال القيم البدائية والسلسلة. يعمل مع الإشارة فقط.


ميزة التوصيل التلقائي

ويتطلب رمز أقل لأننا لسنا بحاجة إلى كتابة الكود لإدخال التبعية بشكل صريح.


مساوئ التوصيل التلقائي

لا سيطرة للمبرمج.

لا يمكن استخدامه للقيم البدائية والسلسلة.


أوضاع التوصيل التلقائي

هناك العديد من أوضاع التوصيل التلقائي:

كيفية تحميل فيديو يوتيوب vlc
لا.وضعوصف
1)لاهذا هو وضع التوصيل التلقائي الافتراضي. وهذا يعني عدم وجود توصيل تلقائي بشكل افتراضي.
2)بالاسميقوم وضع byName بإدخال تبعية الكائن وفقًا لاسم الحبة. في مثل هذه الحالة، يجب أن يكون اسم الخاصية واسم الفول هو نفسه. يستدعي طريقة الضبط داخليًا.
3)byTypeيقوم وضع byType بإدخال تبعية الكائن وفقًا للنوع. لذلك يمكن أن يكون اسم الخاصية واسم الفول مختلفين. يستدعي طريقة الضبط داخليًا.
4)البناءيقوم وضع المنشئ بإدخال التبعية عن طريق استدعاء مُنشئ الفئة. يستدعي المنشئ الذي يحتوي على عدد كبير من المعلمات.
5)اكتشاف تلقائيتم إهماله منذ الربيع 3.

مثال على التوصيل التلقائي

دعونا نرى الكود البسيط لاستخدام التوصيل التلقائي في الربيع. تحتاج إلى استخدام سمة autowire لعنصر الحبة لتطبيق أوضاع autowire.

 

دعونا نرى المثال الكامل للتوصيل التلقائي في الربيع. لإنشاء هذا المثال، قمنا بإنشاء 4 ملفات.

  1. ب.جافا
  2. أ.جافا
  3. applicationContext.xml
  4. اختبار.java
ب.جافا

تحتوي هذه الفئة على مُنشئ وطريقة فقط.

 package org.sssit; public class B { B(){System.out.println('b is created');} void print(){System.out.println('hello b');} } 
أ.جافا

تحتوي هذه الفئة على مرجع للفئة B والمنشئ والطريقة.

 package org.sssit; public class A { B b; A(){System.out.println('a is created');} public B getB() { return b; } public void setB(B b) { this.b = b; } void print(){System.out.println('hello a');} void display(){ print(); b.print(); } } 
applicationContext.xml
 
اختبار.java

تحصل هذه الفئة على الحبة من ملف applicationContext.xml وتستدعي طريقة العرض.

 package org.sssit; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext('applicationContext.xml'); A a=context.getBean('a',A.class); a.display(); } } 

انتاج:

 b is created a is created hello a hello b 

1) حسب وضع التوصيل التلقائي بالاسم

في حالة وضع التوصيل التلقائي حسب الاسم، يجب أن يكون معرف الفول واسم المرجع متماثلين.

ويستخدم داخليا حقن الواضع.

 

ولكن، إذا قمت بتغيير اسم الفول، فلن يتم إضافة التبعية.

دعونا نرى الكود الذي نغير فيه اسم الحبة من b إلى b1.

 

2) حسب وضع التوصيل التلقائي

في حالة وضع التوصيل التلقائي byType، قد يختلف معرف الفول واسم المرجع. ولكن يجب أن يكون هناك حبة واحدة فقط من النوع.

ويستخدم داخليا حقن الواضع.

 

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

ولكن، إذا كان لديك عدة حبات من نوع واحد، فلن تعمل وستطرح استثناءً.

دعونا نرى الكود الذي يوجد به العديد من الفاصوليا من النوع B.

 

في مثل هذه الحالة، فإنه سيتم رمي استثناء.


3) وضع التوصيل التلقائي للمنشئ

في حالة وضع التوصيل التلقائي للمنشئ، تقوم حاوية الزنبرك بحقن التبعية بواسطة مُنشئ ذو معلمات أعلى.

قائمة المصفوفات

إذا كان لديك 3 مُنشئات في الفصل، وسيطة صفرية، ووسيطة واحدة، ووسيطة واحدة، فسيتم إجراء الحقن عن طريق استدعاء المُنشئ ثنائي الوسيطات.

 

4) لا يوجد وضع التوصيل التلقائي

في حالة عدم وجود وضع التوصيل التلقائي، لا تقوم حاوية الزنبرك بحقن التبعية عن طريق التوصيل التلقائي.