1 ميزات الربيع الأساسية
الربيع هو إطار مفتوح المصدر نشط للغاية. إنه إطار يقوم ببناء أنظمة Javaee متعددة الطبقات على أساس Core ، والغرض منه الرئيسي هو تبسيط تطوير المؤسسات.
يدير الربيع الكود الخاص بك بطريقة غير جراحية. يدعو الربيع "الحد الأدنى من التسلل" ، مما يعني أنه يمكنك تثبيت أو إلغاء تثبيت الربيع في الوقت المناسب ، ويجعل الربيع Java مشرقًا. (مبدأ مفتوح وإغلاق) ، إليك مبدأ الإغلاق.
2. الأدوات اللازمة لتطوير الربيع
(هنا نختار أولاً الربيع 2.5 ثم 3.0)
2.1 حزمة جرة الربيع
قم بتنزيل الربيع على http://www.springsource.org/download ، ثم إلغاء الضغط ، ابحث عن ملف JAR التالي في دليل إزالة الضغط ، ونسخه إلى classpath
- مكتبة فصل الربيع الأساسية هي dist/spring.jar under dist in Spring Document
-مكتبة الطرف الثالث المقدمة هي كل وثيقة الربيع تحت LIB و LIB/Jakarta-Commons/Commons-logging.jar
-إذا تم استخدام البرمجة الجانبية (AOP) ، فإن ملفات JAR التالية LIB/SABNEJ/SABNEJWEAVER.JAR و SIDERTJRT.JARLIB/CGLIB/CGLIB-NODEP-2.1_3.JAR مطلوبة أيضًا
-إذا كنت تستخدم التعليقات التوضيحية في JSR-250 ، مثل@Resource/@postconstruct/@predestroy ، يلزم أيضًا ملف JAR LIB/J2EE/common-annotations.jar أيضًا
ملاحظة: يشير JSR (طلب مواصفات JAVA) إلى طلب رسمي لإضافة مواصفات تقنية موحدة إلى JCP (عملية مجتمع JAVA). يمكن لأي شخص تقديم طلب JSR (Java SPECISION) لإضافة واجهات برمجة التطبيقات والخدمات الجديدة إلى منصة Java. أصبح JSR معيارًا مهمًا في عالم Java
2.2 ملف تكوين الربيع
بشكل افتراضي ، هو ملف ApplicationContext.xml. يمكن إنشاء العديد من ملفات XML ، ويتم تكوين هذا بشكل عام في المشاريع. (تم إنشاؤه في دليل SRC)
3 شرح مفصل للوظائف الأساسية للربيع
3.1 Springioc
انعكاس التحكم في الربيع: تسليم الخلق والتهيئة والتدمير وغيرها من المهام للكائنات إلى حاوية الربيع. يتحكم في دورة حياة كائن بواسطة حاوية الربيع.
خطوة:
• أ. ابدأ حاوية الربيع
1. ابحث عن ملفات التكوين في classpath لتشكيل الحاوية
نسخة الكود كما يلي: ApplicationContext ctx = classpathxmlapplicationcontext جديد (سلسلة جديدة [] {"ApplicationContext.xml"}) ؛
يمكنك البحث عن ملفات XML في ClassPath بأكملها
* تحميل بهذه الطريقة. تحتاج إلى وضع ملف تكوين الربيع تحت مسار ClassPath للمشروع الحالي
* يشير مسار ClassPath إلى دليل SRC للمشروع الحالي ، وهو موقع تخزين ملف مصدر Java.
2. ابحث عن ملفات التكوين في مسار نظام الملفات لتثبيت الحاوية
يمكن لملف تكوين Spring تحديد ملفات تكوين متعددة ويمكن تمريرها من خلال صفائف السلسلة.
ملاحظة: استخدم الطريقة الأولى لبدء الحاوية في كثير من الأحيان
• ب. استخراج الكائنات من حاوية الربيع
هيكل حاوية الربيع:
3.2 الاسم المستعار
<Beans> <alias name = "person" alias = "p" /// alias هو الاسم المستعار ، يمكنك الحصول على الفاصوليا من خلال p. <bean name = "person"/> </bans>
مع مثل هذا التكوين ، يمكن تحقيق تأثير التسمية في مكان واحد واستخدام أسماء مختلفة في أماكن متعددة.
3.3 كائنات داخلية حاوية الربيع
1 كيفية إنشاء كائن
1.1 لا يوجد منشئ المعلمات
<bean id = "helloworld"> </ban>
1.2 طريقة مصنع ثابت
<bean id = "helloworld2"
المصنع-method = "getInstance"> </ban>
1.3 مثال طريقة المصنع
<bean id = "helloworldfactory"> </ban>
<bean id = "helloworld3" factory-bean = "helloworldfactory" method = "getInstance"> </bean>
فقط تذكر المفهوم. الطريقة الأولى هي الأكثر استخدامًا ، ولكن عند الاندماج مع الأدوات الأخرى ، يتم استخدام نموذج مصنع المثيل.
مثال :
تكوين ApplicationContext.xml
<؟ XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5. فئة الفئة -> <bean id = "helloWorld"> </bean> <! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Method = "getInstance" > </bean> <! ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
إنشاء كيان فئة HelloWorld
package com.itheima10.spring.createBject ؛ public class helloWorld {public void hello () {system.out.println ("hello") ؛ }}إنشاء مصنع ثابت HelloWorldFactory
package com.itheima10.spring.createBject.method ؛ public class helloWorldfactory {public static helloWorld getInstance () {system.out.println ("method static method") ؛ إرجاع New HelloWorld () ؛ }}إنشاء مصنع جسدي HelloWorldFactory2
package com.itheima10.spring.createBject.method ؛ public class helloworldfactory2 { / *** يجب إنشاء كائن المصنع قبل أن يسمى الطريقة* regurn* / public HelloWorld getInstance () {return new Helloworld () ؛ }}كتابة طريقة الاختبار createObjectMethodTest
package com.itheima10.spring.createBject.method ؛ import org.junit.test ؛ استيراد org.springframework.context.applicationContext ؛ import org.springframework.context.support.classphantxmlication ؛/** CreateObjectMethodTest { / *** افتراضيًا ، تستدعي حاوية Spring المُنشئ الافتراضي لفئة لإنشاء كائن* / test public void testCreateBject_Default () {ApplicationContxt context = new ClassPathmLapplicationContext ("ApplicationContext.xml") ؛ HelloWorld HelloWorld = (HelloWorld) Context.getBean ("HelloWorld") ؛ HelloWorld.Hello () ؛ }/*** قم بإنشاء كائن باستخدام مصنع ثابت* <bean id = "helloWorld2" مصنع-method = "getInstance"> </boan> classpathxmlapplicationContext ("ApplicationContext.xml") ؛ HelloWorld HelloWorld = (HelloWorld) Context.getBean ("HelloWorld2") ؛ HelloWorld.Hello () ؛ }/** * طريقة مصنع المثيل تنشئ كائنًا * <bean id = "helloworldfactory" *> </bean> * <bean id = "helloWorld3" factory-bean = "helloWorldfactory" factory-method = "getInstance"> ما يجب القيام به داخل حاوية الربيع: 1. Object*/ test public void testCreateBject_InstanceFactory () {ApplicationContext context = new ClassPathxMlAppLicationContext ("ApplicationContext.xml") ؛ HelloWorld HelloWorld = (HelloWorld) Context.getBean ("HelloWorld3") ؛ HelloWorld.Hello () ؛ }}2 نطاق الكائن
يحتوي نطاق الكائن على خصائصان: Singleton و OrityType. Singleton يعني Singleton
2.1 Singleton (القيمة الافتراضية)
في كل حاوية IOC الربيع ، يوجد مثيل كائن واحد فقط (مشترك).
2.2 النموذج الأولي
السماح بالفاصوليا لتثبيت عدة مرات (إنشاء مثيل واحد مرة واحدة استخدام). الربيع لا يمكن أن يكون مسؤولاً عن دورة حياة الفاصوليا النموذجية بأكملها. هذا يعني أن مسؤولية العميل هو أن يكون واضحًا بشأن الكائنات النموذجية النموذجية وتحرير الموارد باهظة الثمن التي يحتفظ بها أي فول النموذج الأولي.
<bean id = "helloworld" scope = "singleton"> </bean>
<bean id = "helloworld" scope = "prototype"> </bean>
إنشاء فئة HelloWorld
الفئة العامة HelloWorld {List Public List <String> قوائم = ArrayList New ArrayList <String> () ؛ Public HelloWorld () {system.out.println ("مثيل جديد") ؛ } public void hello () {system.out.println ("hello") ؛ }}إنشاء فئة اختبار scopetest
package com.itheima10.spring.scope ؛ استيراد org.junit.test ؛ استيراد org.springframework.context.applicationContext ؛ استيراد org.springframework.context.support.classpathxmlapplication ؛ وضعت في حاوية الربيع وهذه الفئة هي singleton ، ثم ستصبح الخصائص في الفصل مشتركة*/ test public void testCreateBject_Scope_Default () {ApplicationContext Context = new ClassPathmLapPlicationContext ("ApplicationContext.xml") ؛ HelloWorld Hello1 = (HelloWorld) Context.getBean ("HelloWorld") ؛ hello1.lists.add ("aaaa") ؛ Hello2 = (HelloWorld) Context.getBean ("HelloWorld") ؛ hello2.lists.add ("bbbb") ؛ System.out.println (HelloWorld.lists.size ()) ؛ // 2 ، و output مثيل جديد فقط/** * إذا كان ملف تكوين الربيع كما يلي: * <bean id = "helloWorld" scope = "pultypee"> </bean> ، فستقوم حاوية الربيع بإنشاء كائنات متعددة لـ */ @test public void testCreateBject_Scope_Prototype () {ApplicationContxt Application = new classpathxmlication HelloWorld Hello1 = (HelloWorld) Context.getBean ("HelloWorld") ؛ hello1.lists.add ("aaaa") ؛ Hello2 = (HelloWorld) Context.getBean ("HelloWorld") ؛ hello2.lists.add ("bbbb") ؛ System.out.println (HelloWorld.lists.size ()) ؛ // 1 ، وإخراج مثيل جديد فقط}}3 وقت التهيئة
LAZYNING - بشكل افتراضي ، سيتم تهيئة الفول عند بدء تشغيل الحاوية ، ولكن يمكننا تحديد الكسول init = "True" لعقدة الفول لتأخير تهيئة الحبة. في هذا الوقت ، سيتم تهيئة الحبة فقط إذا تم استرداد الفول لأول مرة. يحب:
<bean id = "xxx" lazy-init = "true"/>
إذا كنت ترغب في تطبيق التهيئة المتأخرة على جميع الفاصوليا ، فيمكنك ضبط الافتراض والكسل-"صحيح" في الفاصوليا الجذرية ، على النحو التالي:
<beans الافتراضية والكسل = "true" ...>
الربيع يثبت كل فاصوليا سينجلتون مقدمًا عند بدء التشغيل افتراضيًا. تعني الاستئصال المبكر أنه كجزء من التهيئة ، يقوم ApplicationContxt تلقائيًا بإنشاء وتكوين جميع حبوب Singleton. هذا عادة ما يكون شيء جيد. لأنه بهذه الطريقة يمكن اكتشاف أي أخطاء في التكوين على الفور.
Lazy-Init False ، ستقوم حاوية الربيع بالإبلاغ عن خطأ عند بدء تشغيله (طريقة أفضل)
Lazy-Init صحيح ، وستعمل حاوية الربيع على خطأ عند استدعاء الفصل.
تكوين ApplicationContext.xml
<bean id = "helloworld" scope = "prototype"> </bean> </bans>
إنشاء فئة اختبار createObjectWhentest
package com.itheima10.spring.createBject.hen ؛ import org.junit.test ؛ استيراد org.springframework.context.applicationContext ؛ import org.springframework.context.support.classpathxmlictixtxt ؛ HelloWorld Object* 3. طريقة استدعاء الكائن** <bean id = "helloWorld"> </bean> <bean id = "helloworld2"> </ban> لأنه يتم الإعلان عن فاصلين في حاوية الربيع ، إذا حدث حاوية الزنبرك ، فستكون هناك خطأ في الإرادة ، فسيتم الإبلاغ عن حاوية tom strups ، وتبدأ في الإرادة ، وينتقل عن حاوية tom. يتم عرضها في وقت مبكر بشكل خاص. إذا قام الفاصوليا بتخزين كمية كبيرة من البيانات ، فإن هذه الطريقة ليست جيدة ، وقد تكون البيانات عالقة في الذاكرة في وقت مبكر جدًا. إذا لم تكن الفاصوليا مفردة ، فبغض النظر عن كيفية تكوينها ، يجب إنشاء الكائن عندما يكون سياقًا. context.getBean ("HelloWorld") ؛ } /*** <bean id = "helloWorld" lazy-init = "true"> </bean>* order* 1. ابدأ حاوية الربيع* 2. السياق. إذا قام الفاصوليا بتخزين كمية كبيرة من البيانات ، فمن الضروري تحميل البيانات عند الحاجة*/ Test public void testCreateBject_When_Lazy () {ApplicationContext context = classpathxmlapplicationContext ("ApplicationContext.xml") ؛ context.getBean ("HelloWorld") ؛ }}4 init ، تدمير الأساليب
عندما يقوم Spring بتهيئة الفاصوليا أو يدمر الفاصوليا ، تكون بعض المعالجة مطلوبة في بعض الأحيان ، بحيث يمكن لـ Spring استدعاء طريقتين لدورة الحياة في الفول عند إنشاء الفاصوليا وفكها. يمكنك تحديد طريقة للعمل.
<bean id = "foo" class = "... foo" init-method = "setup" decoration-method = "teardown"/>
استدعاء طريقة init-method عندما يتم تحميل FOO في حاوية الربيع. استدعاء طريقة النشر عندما يتم حذف FOO من الحاوية (Scope = Singleton صالحة)
كتابة HelloWorld
الطبقة العامة HelloWorld {public HelloWorld () {system.out.println ("مثيل جديد") ؛ } public void init () {system.out.println ("init") ؛ } public void destroy () {system.out.println ( } public void hello () {system.out.println ("hello") ؛ }}اكتب فئة الاختبار initDestroytest
package com.itheima10.spring.ioc.initdestroy ؛ استيراد org.junit.test ؛ استيراد org.springframework.context.applicationContext ؛ import org.springframework.context.support.classpathxmlictix ؛ الترتيب:* 1. ابدأ حاوية الربيع* 2. إنشاء كائن HelloWorld* 3. تنفيذ طريقة init* التنفيذ التلقائي داخل حاوية الربيع* 4. طريقة استدعاء الكائن* 5. لا يمكن تنفيذ طريقة التدمير إلا عندما يتم إغلاق حاوية الربيع: لا تسمى الحاوية المفردة أيضًا عن حاوية الربيع ، ولا تسمى حاوية الربيع* الوصف:* الوصف: * في حاوية الربيع ، فقط إذا كانت الفاصوليا واحدة هي مفردة ، فإن حاوية الربيع مسؤولة عن إنشاء وتهيئة وتدمير الكائنات* إذا لم تكن الفاصوليا مفردة ، فإن حاوية الزنبرك مسؤولة فقط عن إنشاء وتهيئة*/ @test public void testinitdestroy () HelloWorld HelloWorld = (HelloWorld) Context.getBean ("HelloWorld") ؛ HelloWorld.Hello () ؛ classPathxMlApplicationContext ApplicationContext = (classPathxMlapplicationContext) السياق ؛ ApplicationContext.close () ؛ }} مخطط تسلسل التنفيذ:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.