بادئ ذي بدء ، لمعرفة كيفية ضخ الفاصوليا في الربيع ، يجب أولاً أن تفهم ماهية حقن التبعية. يشير حقن التبعية إلى: اسمح لفئة الاتصال بحقن اعتماد فئة التنفيذ لفئة التنفيذ لواجهة معينة يتم حقنها من قبل طرف ثالث للقضاء على اعتماد فئة الاتصال على فئة تنفيذ واجهة معينة.
تشمل طرق حقن التبعية المدعومة في حاويات الربيع بشكل أساسي حقن الممتلكات ، وحقن المنشئ ، وحقن طريقة المصنع. بعد ذلك ، سنقدم طرق حقن التبعية الثلاثة وطرق التكوين المحددة الخاصة بهم بالتفصيل.
1. حقن السمة
حقن السمة يعني حقن قيمة السمة أو كائن تابع للفول من خلال طريقة setxxx (). نظرًا لأن طريقة حقن السمة انتقائية ومرنة ، فهي أيضًا طريقة الحقن الأكثر شيوعًا في التطوير الفعلي.
سيقوم Spring أولاً باستدعاء مُنشئ Bean الافتراضي لإنشاء إنشاء كائن Bean ، ثم استدعاء طريقة SET من خلال الطريقة المنعكسة لحقن قيمة الخاصية.
يتطلب حقن الممتلكات من الفول توفير مُنشئ افتراضي ويجب أن يوفر طريقة محددة للخصائص التي تحتاج إلى حقنها.
نصائح: ما يسمى المُنشئ الافتراضي ، أي مُنشئ بدون معلمات. إذا لم يكن هناك مُنشئ مخصص في الفصل ، فسيقوم النظام (JVM) بإنشاء مُنشئ افتراضي بدون معلمات. إذا تم تخصيص المُنشئ الذي يحتوي على المعلمات بشكل صريح في الفصل ، فلن يقوم النظام تلقائيًا بإنشاء المنشئ الافتراضي ، وتحتاج إلى إضافة مُنشئ يدويًا بدون معلمات.
فيما يلي مثال لإظهار طريقة حقن الممتلكات في الربيع:
اكتب فئة مستخدم:
Package com.kevin.bean ؛/** * إنشاء طريقة حقن خاصية Test Bean * Author Kevin * */Public Class user {private String username ؛ السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ }}ملف التكوين:
<؟ xmlns: context = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "<!-تعريفات الفول هنا-> <! </property> </bans>
من بينها ، تتوافق كل قيمة خاصية مع علامة خاصية ، وقيمة الاسم الخاصية هي اسم الخاصية في الفصل. في فئة تنفيذ الفول ، لديها طريقة التنفيذ المقابلة setUsername ().
نصائح: سوف تحقق الربيع فقط ما إذا كانت الفول تحتوي على طريقة Setter ، ولا تقدم متطلبات محددة حول ما إذا كانت هناك متغيرات سمة مقابلة. ومع ذلك ، وفقًا للقواعد التقليدية ، يجب علينا تعيين متغيرات السمة المقابلة لها.
مواصفات التسمية لـ <property> العلامات في الربيع:
بشكل عام ، تبدأ أسماء متغيرات سمة Java بأحرف صغيرة ، ولكن بالنظر إلى بعض اختصارات اللغة الإنجليزية ذات المعاني الخاصة ، تتيح Java Beans أيضًا أسماء متغيرة تبدأ بأحرف كبيرة. ولكن يجب استيفاء النقطتين التاليتين:
بالنسبة لطرق حقن السمات ، لا يمكن توفير الضمانات إلا في ملف التكوين بشكل مصطنع ، ولكن لا يمكن توفير الضمانات على مستوى بناء الجملة. في هذا الوقت ، تحتاج إلى استخدام حقن المنشئ لتلبية المتطلبات بشكل أفضل.
2. حقن المنشئ
حقن المنشئ هو طريقة حقنة شائعة الاستخدام إلى جانب حقن السمة. يمكن أن يضمن تعيين بعض الخصائص اللازمة عند إنشاء مثيل للفاصوليا ويمكن استخدامه بعد مثيله.
الشرط المسبق لاستخدام حقن المنشئ هو أن الحبة يجب أن توفر مُنشئًا مع وسيطات.
لحقن المنشئ ، يمكن استخدام ملفات التكوين بالطرق التالية:
【طريقة إدخال المعلمة المطابقة حسب النوع】
اكتب رمز الفول:
حزمة com.kevin.bean ؛/** * اكتب اختبار الفول لمطابقة المعلمات حسب النوع * Author Kevin * */Public Class Person {private String Name ؛ عصر عدد صحيح خاص ؛ السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } integer getAge () {return Age ؛ } public void setage (integer age) {this.age = age ؛ }}اكتب ملفات التكوين:
<؟ xmlns: context = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here --> <!-- configuration object --> <bean id="person"> <constructor-arg type="String"> <value> kevin </value> </structructor-arg> <constructor-arg type = "integer"> <value> 20 </value> </songenructor-arg> </bans>
تعتمد ملفات تكوين Spring على استراتيجيات التكوين المستقلة عن ترتيب ملصقات العناصر ، وبالتالي يمكن ضمان اليقين في معلومات التكوين إلى حد ما.
ثم عندما تكون معلمات نوع متعددة للمُنشئ في الفول هي نفسها ، يكون من السهل التسبب في ارتباك عن طريق مطابقة المعلمات وفقًا للنوع. في هذا الوقت ، هناك حاجة إلى طريقة أخرى: مطابقة المعلمات وفقًا للفهرس.
【مطابقة المعلمات وفقًا للفهرس】
اكتب رمز الفول:
Package com.kevin.bean ؛/** * اكتب اختبارات الفول والمعلمات في طريقة الفهرس * Author Kevin * */Public Class Student {Private String Name ؛ سلسلة جنسية خاصة ؛ درجة مزدوجة خاصة ؛ الطالب العام (اسم السلسلة ، سلسلة الجنس ، نقاط مزدوجة) {super () ؛ this.name = name ؛ this.gender = الجنس ؛ this.score = النتيجة ؛ }}يتم كتابة ملف التكوين على النحو التالي:
<؟ xmlns: context = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "<!-تعريفات الفول هنا-> <! value = "kevin"> </constructor-arg> <constructor-arg index = "1" "value =" male "> </constructor-arg> <constructor-arg index =" 2 "value =" 66 "
نصائح: أثناء حقن الممتلكات ، يحدد Spring سمة التكوين وطريقة Setter المقابلة وفقًا لمواصفات Java Bean ، ويستخدم آلية انعكاس Java لاستدعاء طريقة Setter الخاصة بـ Sentribute لإكمال حقن الممتلكات. ومع ذلك ، فإن آلية انعكاس Java لا تتذكر اسم المعلمة المُنشئ ، لذلك لا يمكننا تكوين المُنشئ عن طريق صياغة اسم المعلمة المُنشئ ، لذلك يمكننا فقط إكمال حقن خاصية المنشئ من خلال نوع وفهرس المعلمة.
【استخدام معلمات مطابقة نوع الاستخدام والفهرس】
في بعض ملفات التكوين المعقدة ، يلزم استخدام النوع والفهرس لاستخدامه في وقت واحد لإكمال حقن المعلمة من المنشئ. فيما يلي مثال لإظهاره.
اكتب الفاصوليا:
حزمة com.kevin.bean ؛/** * اكتب اختبارات الفول لاستخدام المعلمات المطابقة النوع والفهرس معًا * Author Kevin * */Public Class Teacher {Private String Name ؛ عنوان السلسلة الخاص ؛ راتب مزدوج خاص ؛ عصر INT الخاص ؛ المعلم العام (اسم السلسلة ، عنوان السلسلة ، الراتب المزدوج) {super () ؛ this.name = name ؛ this.address = العنوان ؛ هذا. } المعلم العام (اسم السلسلة ، عنوان السلسلة ، int age) {super () ؛ this.name = name ؛ this.address = العنوان ؛ this.age = العمر ؛ }}في هذا الفئة ، هناك مُنشئان زائدان ، ولديهما جميعًا ثلاثة معلمات. في هذه الحالة ، لا يمكن استخدام أساليب النوع والفهرس إكمال المتطلبات. في هذا الوقت ، يجب استخدام كل من خصائصهما في نفس الوقت.
ملف التكوين:
<؟ xmlns: context = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "<! <Value> kevin </value> </constructor-arg> <constructor-arg index = "1" type = "string"> <value> الصين </value> </constructor-arg> <constructor-arg index = "2" type = "int"> <suale> 20 </value>
يمكنك أن ترى أن التركيز هو في الواقع على نوع المعلمة الثالثة ، لذلك نحدد الفهرس ونكتب في ملف التكوين ، حتى يتمكن الربيع من معرفة أي مُنشئ لضخ المعلمة.
نصائح: أضف إلى ملف التكوين الخاص بنا ، هناك مشكلة في الغموض. يمكن بدء حاوية الربيع بشكل طبيعي ولن يبلغ عن خطأ. سوف تستخدم بشكل عشوائي مُنشئ مطابقة لإنشاء إنشاء فول. قد لا يكون المستخدم مطلوبًا من قبل المستخدم ، لذلك يجب أن نكون حريصين على تجنب هذا الغموض عند البرمجة.
【مطابقة المعلمات من خلال انعكاس نوعها】
إذا كان نوع المعلمة مُنشئ الفول يمكن تمييزًا ، نظرًا لأن آلية انعكاس Java يمكن أن تحصل على نوع المعلمة المُنشأة ، حتى لو لم يوفر حقن معلومات النوع والفهرس ، لا يزال بإمكان الربيع إكمال حقن معلومات المنشئ. على سبيل المثال ، في المثال التالي ، يمكن تمييز نوع المعلمة من مُنشئ فئة المدير.
كتابة فئة المدير:
Package com.kevin.bean ؛/** * اكتب اختبار الفول لمطابقة الوسائط من خلال انعكاس النوع الخاص به * Author Kevin * */Public Class Manager {Private String Name ؛ راتب مزدوج خاص ؛ شخص خاص المدير العام (اسم السلسلة ، الراتب المزدوج ، الشخص) {super () ؛ this.name = name ؛ هذا. this.person = شخص ؛ }}اكتب ملفات التكوين:
<؟ xmlns: context = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">! </structructor-arg> <constructor-arg> <ref bean = "user"/> </structructor-arg> <constructor-arg> <ref bean = "person"/> </sultructor-arg> </bans>
يمكن للطرق المذكورة أعلاه تنفيذ حقن معلمات المنشئ ، ولكن من أجل تجنب حدوث المشكلات ، يوصى باستخدام فهرس صريح وتكوين معلومات إدخال معلمة المنشئ.
3. حقن طريقة المصنع
طريقة المصنع عبارة عن نمط تصميم يستخدم غالبًا في التطبيقات ، كما أنه الطريقة الرئيسية لتنفيذ فكرة انعكاس التحكم وتصميم المركز الفردي. فئة المصنع مسؤولة عن إنشاء مثيلات فئة مصنع واحدة أو أكثر. تقوم طريقة فئة المصنع عمومًا بإرجاع مثيل الفئة الهدف في شكل واجهة أو متغير فئة مجردة.
تحظر فئة المصنع خطوات إنشاء فئة الهدف من الخارج ، ولا يتعين على المتصل حتى تحديد ماهية الفئة المستهدفة المحددة. نظرًا لأن حاويات الربيع توفر وظائف أساليب المصنع في أساليب الإطار وهي مفتوحة للمطورين بطريقة شفافة. لذلك ، نادراً ما يكون من الضروري كتابة أساليب الهندسة يدويًا. ومع ذلك ، ستظل طرق الهندسة في بعض الأنظمة القديمة أو مكتبة الطرف الثالث. في هذا الوقت ، يمكن استخدام طريقة حقن مصنع الربيع لحقن الربيع.
يمكن تقسيم طرق حقن مصنع الربيع إلى ثابت وغير منتظم.
【طريقة المصنع غير الاصطناعية】
بعض أساليب المصنع غير متتالية ويجب إنشاء مثيل لها قبل أن يمكن استدعاء طرق المصنع. فيما يلي مثال لإظهاره.
اكتب فئة المصنع:
Package com.kevin.factorybean ؛/** * اكتب اختبارات فئة المصنع حقن طريقة المصنع غير الأساسي * Author Kevin * */public Class BookFactory {public bukbook () {book book = new book () ؛ book.setName ("فكر في Java") ؛ كتاب العودة }}كتابة ملف التكوين:
<؟ xmlns: context = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <! Factory-Bean = "BookFactory" Method = "Buybook"> </bean> </bans>
نظرًا لأن طريقة المصنع لـ BookFactory ليست ثابتة ، فأنت بحاجة أولاً إلى تحديد حبة من فئة المصنع ، ثم الرجوع إلى مثيل الفاصوليا من خلال خاصية مصنع Bean. بعد ذلك ، يتم استخدام طريقة المصنع المقابلة لتحديد طريقة المصنع المقابلة.
【طريقة المصنع الثابت】
العديد من أساليب فئة المصنع ثابتة ، مما يعني أنه يمكن استدعاء طرق فئة المصنع دون إنشاء مثيلات فئة المصنع. لذلك ، فإن أساليب الهندسة الثابتة أكثر ملاءمة وموجزة من طرق المصنع غير القتالية. فيما يلي مثال لإظهار طريقة المصنع الثابت.
اكتب فئة المصنع:
Package com.kevin.factorybean ؛/** * اكتب اختبار فئة المصنع ، حقن طريقة المصنع الثابت * Author kevin * */class carfactory {public static car createCar () {car car = new car () ؛ car.setbrand ("Lamborghini") ؛ إرجاع السيارة }}اكتب ملفات التكوين:
<؟ xmlns: context = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!
لخص
يوفر Spring ثلاث طرق حقن اختيارية ، ولكن في التطبيقات الفعلية ، لا يوجد معيار موحد للطريقة التي يجب أن نختارها. فيما يلي بعض الأسباب للإشارة إلى:
سبب حقن المنشئ:
سبب حقن الخصائص:
في الواقع ، يوفر لنا Spring العديد من الطرق لحقن المعلمات ، لذلك يجب أن يكون لهذه الأساليب أسبابها الخاصة. كل طريقة لها مزايا فريدة في قضية معينة. نحتاج فقط إلى اختيار الطريقة المناسبة وفقًا لاحتياجات الاستخدام الخاصة بنا ، ولكن لا ينصح بحقن طريقة المصنع عمومًا.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.