مرجع بسيط لاستخدام Spring-IOC:
تحليل مثيلات بسيطة من الربيع IOC وسمات النطاق من الفاصوليا
1. حقن أنواع البيانات المختلفة من خلال طريقة المجموعة
يجب إضافة رمز فئة الاختبار (يجب إضافة الخصائص التي تم حقنها في طريقة SET باستخدام طريقة SET)
/** مثال على الحقن من خلال طريقة المجموعة*/الفئة العامة IOC_BY_SET {/** حقن المعلمة نوع الصدفة*/معرف عدد صحيح خاص ؛/** حقن معلمة نوع السلسلة*/اسم السلسلة الخاصة ؛/** حقن كيان فول*/مستخدم مستخدم خاص ؛/** حقن ARRAY*/private Object ؛/** inject collect set ؛/** enject enject map bairs-vairue bairs*/private map <object ، object> map ؛/** enject properties type*/private properties ؛/** enject string فارغة*/سلسلة خاصة فارغة ؛/** حقن القيمة الفارغة*/private nullvalue = "" ؛ null) {return false ؛} آخر {system.out.println ("id:" + id);}System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name) ؛} System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ صفيف) {system.out.println (object.toString ()) ؛}} System.out.println ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {system.out.println ("set:") ؛ for (كائن الكائن: تعيين) {system.out.println (object.toString ()) ؛}} System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {system.out.println (intrad.getKey () + "|" + Entry.getValue ()) ؛}} System.out.println ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Entry.getValue ()) ؛}} System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- setName (اسم السلسلة) {this.name = name ؛} public void setUser (مستخدم المستخدم) {this.user = user ؛} public void setarray (object [] array) {this.array = array ؛} public void set (list> rip setMap (map <object ، object> map) {this.map = map ؛} public void setProperties (خصائص الخصائص) {this.properties = properties ؛} public void setemptyvalue (string nullvalue) nullvalue ؛}}ApplicationContext.xml التكوين
<!-تعيين الحقن-> <bean id = "ioc_by_set"> <!-سمة معرف الحقن-> <property name = "id" value = "1"/> <!-باستخدام <!-معالجة XML أحرف خاصة مع <!-باستخدام <! <value> <! name = "array"> <Sray> <!-تحديد عناصر الصفيف-> <suale> Array01 </value> <Sale> Array02 </value> <value> Array03 </value> </ray> </property> <!-حقن نوع قائمة الحقن-> <اسم property = "list> <! <Value> list03 </value> </list> </property> <!-حقن نوع مجموعة-> <property> <property --- تحديد العناصر في القائمة-> <suality> list02 </value> <value> list03 </value> </list> </propert <Value> set02 </value> <value> set03 </value> </set> </surrent> <!-حقن نوع الخريطة-> <property name = "map"> <map> <!-تحديد قيمة مفتاح القيمة في الخريطة-> <reth> <key> <kear> mapkey01 </value> <sive> <value> <value> mapKey02 </value> </key> <value> mapValue02 </value> </terft key = "propkey2"> propvalue2 </prop> </props> </property> <!-حقن سلسلة فارغة-> <property name = "fmarevalue"> </value> </propect
رمز الاختبار
الفئة العامة ioc_test {private applicationContext ctx ؛@fore public public load () {// قراءة ApplicationContext.xml ملف ctx = classpathxmlapplicationcontext (applicationcontext.xml ") ؛}@test public void settest () ctx.getbean ("ioc_by_set") ؛ ioc.checkattr () ؛}}نتائج وحدة التحكم:
ID: 1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
2. ضخ أنواع مختلفة من السمات من خلال طرق البناء
ملاحظة: عند استخدام إصدار JDK1.8 ، يرجى ترقية حزمة JAR ذات الصلة بنابض إلى الإصدار 4.x أو أعلى ، وإلا سيتم حقن مُنشئات غير متوافقة.
رمز فئة الاختبار
/** مثال على الحقن من خلال مُنشئ*/فئة عامة ioc_by_constructor {معرف Integer الخاص ؛ اسم سلسلة خاصة ؛ مستخدم خاص ؛ القائمة الخاصة <Bourge> قائمة ؛ public ioc_by_constructor () {} public ioc_by_constructor (inte id ، اسم سلسلة ، قائمة مستخدم ، قائمة <Object>) list ؛}/** تحقق مما إذا كانت الحقن ناجحة*/public boolean checkattr () {if (id == null) {return false ؛} آخر {system.out.println ("id:" + ID) ؛} System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + "|" user.getPassword () ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- حقيقي؛}}ApplicationContext.xml التكوين
<!-value-arg constructor-arg = "p & g"/> <!-كائن الحقن-> <bean id = "ioc_by_constructor"> <!-كائن الحقن-> <bean> <constructor-arg value = "1" type = "java.lang.integer"/> <! <Condructor-arg> <!-كائن مدمج-> <bean> <value-arg-arg constructor = "1"/> <value-arg constructor = "Construction Internal Bean"/> <constructor-arg value = "666"/> </ball> </sult> </value> </value> </value> </value> <value> list03 </value> </list> </constructor-arg> </bean>
رمز الاختبار:
الفئة العامة ioc_test {private applicationcontext ctx ؛@forefore public void load () {// قراءة ApplicationContext.xml file ctx = new classPathxMlapPlicationContext ("ApplicationContext.xml") ؛ ctx.getbean ("ioc_by_constructor") ؛ ioc.checkattr () ؛}}نتائج وحدة التحكم:
ID: 1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
3. الحقن التلقائي (التجميع التلقائي)
على الرغم من أن التجميع التلقائي يمكنه حفظ بعض التعليمات البرمجية ، إلا أنه لا ينصح باستخدامه
رمز فئة الاختبار:
/** حقن التجميع التلقائي*/الفئة العامة IOC_BY_AUTO {مستخدم مستخدم خاص ؛/** تحقق مما إذا كان الحقن ناجحًا*/public boolean checkattr () {if (user == null) {return false ؛ user.getPassword ()) ؛} system.out.println ("صحيح !!!") ؛ إرجاع true ؛}/** تتطلب سمة التجميع التلقائي تعيين طريقة تعيين*/public void setUser (مستخدم المستخدم) {this.user = user ؛}}ApplicationContext.xml التكوين
<!-الفاصوليا التي تم الحصول عليها بواسطة التجميع التلقائي-> <bean id = "user"> <property name = "id" value = "1"/> <property name = "username" value = "Auto-assembly"/> <propert فصل. في حالة تطابق الفاصوليا المتعددة ، قم برمي مُنشئ استثناء يتطابق مع الفول المقابل وفقًا لنوع المعلمة المُنشأة للفئة. لا.
رمز الاختبار
الفئة العامة ioc_test {private applicationContext ctx ؛@forefore public void load () {// read ApplicationContext.xml file ctx = new classpathmlapplicationContext ( ctx.getbean ("ioc_by_auto") ؛ ioc.checkattr () ؛}}نتائج وحدة التحكم
المستخدم: 1 | التجميع التلقائي | 233 صحيح! ! !
ما ورد أعلاه يستخدم وضع byname. تم الإشارة إلى رمز التكوين للأوضاع الأخرى ولم يتم إجراء أي اختبار.
4. حقن السمات باستخدام مساحة الاسم P.
رمز فئة الاختبار
/** الحقن باستخدام مساحة الاسم P*/الفئة العامة IOC_BY_P {معرف Integer الخاص ؛ اسم سلسلة خاصة ؛ مستخدم خاص ؛/** تحقق مما إذا كان الحقن ناجحًا*/public boolean checkattr () {if (id == null) {return false ؛ ID) ؛} System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name) ؛} System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ معرف) {this.id = id ؛} public void setName (اسم السلسلة) {this.name = name ؛ApplicationContext.xml التكوين
<!-حقن أنواعًا مختلفة من الخصائص باستخدام مساحة الاسم p-> <bean id = "user2"> <property name = "id" value = "1"/> <property name = "username" value = "p"/> <property name = "password" value = "233"/> </bean id = "ioc_by_by_p" p: P: user-ref = "user2"> </ban>
رمز الاختبار
الفئة العامة IOC_TEST {private applicationContext ctx ؛@forefore public void load () {// read ApplicationContext.xml file ctx = new classpathmlapplicationcontext ("applicationContext.xml") ؛ ctx.getbean ("ioc_by_p") ؛ ioc.checkattr () ؛}}نتائج وحدة التحكم
ID: 1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
5. حقن باستخدام طريقة التعليق
قدم الربيع الحقن القائم على التعليقات التوضيحية بعد 3.0.
1.@AutoWired-innotation لمتغيرات الأعضاء والأساليب والمبنات لإكمال أعمال التجميع التلقائية. لا ينصح باستخدامه.
2. @ @مؤهل معزبة بـ autowired لحل مجموعة الفاصوليا المتعددة من نفس النوع
3. @Resource-JSR-250 التعليق التوضيحي القياسي ، فإن الوظيفة تعادل autowired ، ولكن يتم حقن Autowired تلقائيًا وفقًا لـ BYTYPE ، بينما يتم حقن Resource تلقائيًا وفقًا لـ BYNAME بشكل افتراضي.
4. @postconstruct - أضف التعليق التوضيحي postconstruct إلى الطريقة ، وسيتم تنفيذ هذه الطريقة بواسطة حاوية الربيع بعد تهيئة الحبة.
5. @predestroy-add annotation @predestroy على الطريقة ، سيتم تنفيذ هذه الطريقة بواسطة حاوية الربيع بعد تهيئة الفول.
6. @ @مكون فقط إضافة تعليق توضيحي component إلى الفئة المقابلة ، يتم تعريف الفئة على أنها حبة. لا ينصح باستخدامه. يوصى باستخدام ثلاثة أنواع أخرى محصورة: repository ، service ، controller
repository طبقة تخزين الفول
Service Business Layer Bean
controller عرض طبقة عرض
7.@نطاق تعريف نطاق الفول
تكوين ApplicationContext.xml لأول مرة لتمكين التعليق التوضيحي
<!-مسح الفئة المشروحة في الحزمة-> <السياق: مكون المسح الضوئي package = "com.bc.ioc.demo05"/>
التعليق التوضيحي للفول
repositorypublic class user {private integer id = 1 ؛ user string private username = "EnoTation Injection" ؛ private string password = "233" ؛ public user () getUsername () {return username ؛} السلسلة العامة getPassword () {return password ؛} public void setId (integer id) {this.id = id ؛توضيح رمز فئة الاختبار
/** حقن السمات باستخدام التعليقات التوضيحية*/@service ("ioc_by_annotation") الفئة العامة IOC_BY_ANNOTATION {ersource user user user ؛ public void setUser (user user) {this.user = user ؛}/** {system.out.println ("user:" + user.getId () + "|" + user.getUserName () + "|رمز الاختبار
الفئة العامة ioc_test {private applicationContext ctx ؛@forefore public void load () {// قراءة ApplicationContext.xml file ctx = new classPathxMlapPlicationContext ("applicationContext.xml") ؛} ctx.getbean ("ioc_by_annotation") ؛ ioc.checkattr () ؛}}إخراج وحدة التحكم
بعد الاختبار ، باستخدام حقن التعليقات التوضيحية. إذا تم تكوين ApplicationContext.xml مع طرق الحقن الأخرى ، فسيتم الإبلاغ عن خطأ ، مما سيؤدي أيضًا إلى عدم وجود طرق لحقن أخرى.
المستخدم: 1 | حقن التعليقات التوضيحية | 233 صحيح! ! !
6. حقن الفول من خلال تكوين طريقة المصنع الثابت
رمز المصنع الثابت
/** مصنع ثابت*/فئة عامة staticfactory {public static integer getId () {return 1 ؛} سلسلة ثابتة عامة getName () {return "Static Factory" ؛} المستخدم الثابت العام getUser () {إرجاع مستخدم جديد (1 ، "مستخدم المصنع" ، "666") ؛}}}}}}}}}}}}رمز فئة الاختبار
/** الحقن من خلال مصنع ثابت*/فئة عامة IOC_BY_STATICFACTORY {private integer id ؛ اسم سلسلة خاصة ؛ مستخدم خاص ؛/** تحقق من أن الحقن ناجح*/public boolean checkattr () {if (id == null) {return false ؛ id);}System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name) ؛} System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ معرف) {this.id = id ؛} public void setName (اسم السلسلة) {this.name = name ؛ApplicationContext.xml التكوين
<!-تكوين طريقة المصنع الثابتة ، يقوم Bean بتكوين القيمة التي يتم إرجاعها بواسطة طريقة المصنع كحبة-> <bean id = "factory_id" method = "getId"/> <bean id = "factory_name" factory-method = "getName"/> <bean id = "factory_user" factory-method = <property name = "id" ref = "factory_id"/> <property name = "name" ref = "factory_name"/> <property name = "user" ref = "factory_user"/> </bean>
رمز الاختبار
الفئة العامة ioc_test {private applicationcontext ctx ؛@fore public public load () {// قراءة ApplicationContext.xml file ctx = new classPathMlapPlicationContext ("ApplicationContext.xml") ؛ ctx.getbean ("ioc_by_staticfactory") ؛ ioc.checkattr () ؛}}نتائج إخراج وحدة التحكم
ID: 1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
7. الحقن من خلال طريقة المصنع على سبيل المثال
الفرق من المصنع الثابت هو أن مصنع المثيل ليس ثابتًا. تحتاج إلى أول كائن مصنع مثيل جديد قبل أن تتمكن من تكوين طريقته. يتم إدارة الكائن الجديد أيضًا بحلول الربيع.
رمز المصنع
/** مثيل مصنع*/فئة عامة مصنع {public integer getId () {return 1 ؛} السلسلة العامة getName () {return "مثيل مصنع" ؛} مستخدم عام getUser () {إرجاع مستخدم جديد (1 ، "مستخدم مصنع مثيل" ، "233") ؛}}}رمز فئة الاختبار
/** مثيل حقن مصنع المصنع*/الفئة العامة IOC_BY_FACTORY {معرف Integer الخاص ؛ اسم سلسلة خاصة ؛ مستخدم خاص ؛/** تحقق مما إذا كان الحقن ناجحًا*/public boolean checkattr () {if (id == null) {return false ؛ id);}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- name) ؛} System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ معرف) {this.id = id ؛} public void setName (اسم السلسلة) {this.name = name ؛ApplicationContext.xml التكوين
<!-تكوين مثيل مصنع الفول-> <bean id = "factory"/> <!-تكوين طريقة مصنع المثيل بين-> <bean id = "f_id" factory-bean = "factory" factory-method = "getId"/> <bean id = "f_name" factory-bean = "factory" factory-method = مصنع method = "getUser"/> <!-حقن طريقة مصنع المثيل المقابلة بين-> <bean id = "ioc_by_factory"> <property name = "id" ref = "f_id"/> <property name = "name" ref "
رمز فئة الاختبار
الفئة العامة ioc_test {private applicationContext ctx ؛@forefore public void load () {// read ApplicationContext.xml file ctx = new classpathxmlapplicationContext ("applicationContext.xml") ؛} ctx.getbean ("ioc_by_factory") ؛ ioc.checkattr () ؛}}إخراج وحدة التحكم
ID: 1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! !
لخص
ما سبق يدور حول المناقشة الموجزة لهذه المقالة حول طريقة الحقن في الربيع IOC وحقن أنواع البيانات المختلفة. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!