مقدمة
يتم استخدام انعكاس التحكم (IOC) لحل الاقتران ، ويتم تقسيمه بشكل رئيسي إلى نوعين: حقن التبعية وبحث التبعية.
حقن التبعية هو حقن التبعيات التي يجب أن تكون في البرنامج خارجيًا في البرنامج. بالطبع ، إنه أيضًا مفهوم لأنماط التصميم.
على افتراض أن هناك تطبيق B للواجهات A و A ، سيتم تنفيذ هذا الرمز A A = جديد B () ؛ في هذا الوقت ، ستحدث تبعية معينة حتما. ومع ذلك ، يبدو أن الواجهة تحل التبعية ، لكن الاقتران سيظل يحدث في القيام بذلك. يمكننا استخدام حقن التبعية لتحقيق فصل. في IOC ، يمكنك وضع الرمز الذي تريد الاعتماد عليه في XML ، وتشكيل علاقة التبعية هذه عند الحاجة من خلال حاوية ، أي ، يتم حقن تطبيق الواجهة المطلوبة في الفئة التي تحتاج إلى ذلك. قد يكون هذا مصدر مصطلح "حقن التبعية".
فهم بسيط لحقن التبعية
لذلك ، دعنا نضع جانباً التقنيات المتعلقة بـ Spring و XML الآن ، كيف يمكننا استخدام أسهل طريقة لتنفيذ حقن التبعية؟ الآن لا يزال تنفيذ الواجهات A و A.
لذلك هدفنا مثل هذا ، a = new b () ؛ الآن نحن نحدد الفئة C ، والما يلي هي العلاقة بين C و A. من أجل الجديد ، C ينشئ فئة تنفيذ لواجهة
الفئة العامة C {private A ؛ public c (a a) {this.a = a ؛ }}فكيف تستخدم جديد؟ حدد الفئة D ، واتصل بمنشئ C في D New B () ؛ إنه
الفئة العامة d {test public void use () {c c = new c (new b ()) ؛ }}وبهذه الطريقة ، لن يكون لدينا تبعيات بين A و B في C. إذا أردنا تغيير فئة التنفيذ من A ، فيمكننا تعديل معلمات طريقة البناء مباشرة في D. إنها بسيطة للغاية وأيضًا حل الاقتران. هذه الطريقة هي الأكثر شيوعًا باسم حقن المنشئ.
ثم الربيع هو الحل للاقتران واستخدام IOC. هنا هو أبسط مثال على حقن التبعية في الربيع:
SpringConfig.xml
<؟ XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <ihello " /> < /beans>
التحليل: تم تكوين اثنين من الفاصوليا هنا. الأول هو حقن الفول في المُنشئ ، والثاني هو حقن الفول في المُنشئ.
مرحبا جافا
Smile Smile ؛/*** تم إنشاؤه بواسطة Smile في 2016/4/21. */الفئة العامة Hello {public hello () {system.out.println ("Hello") ؛ } public void sealhhello () {system.out.println ("أريد أن أقول مرحبًا") ؛ }}theinterface.java
باقة Smile ؛/*** تم إنشاؤها بواسطة Smile في 2016/4/20. */الفئة العامة thetestinterface {private hello hello ؛ Public ThetestInterface (Hello Hello) {this.hello = hello ؛ }}use.java
حزمة com.smile ؛ استيراد org.junit.test ؛ استيراد org.springframework.context.applicationContext ؛ استيراد org.springframework.context.support.classpathxmlapplicationcont ؛ import smile.hello ؛ */فئة عامة استخدم {test public void usetest () {applicationContext context = جديد classPathxMlAppLicationContext ("springConfig.xml") ؛ مرحبًا Hello = (Hello) Context.getBean ("Hello") ؛ hello.sayhello () ؛ }}لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.