مقدمة
تعلمت المقالة السابقة بشكل رئيسي عن التكوين والحقن ومحرر الخصائص المخصصة للفاصوليا. اليوم ، دعونا نتعرف على دورة حياة الفول.
أي شيء له دورة حياتها الخاصة ، والبداية ، ونهاية الحياة. ما أنت على دراية به هو دورة حياة Servlets. مثل servlets ، فاصوليا الربيع لها أيضا دورة حياتها الخاصة.
دورة الحياة هي اسم شائع للغاية في التطوير ، ويمكن لكل لغة برمجة أن تجدها مرتبطة بها. لقد بحثت أيضًا عن الكثير من دورات حياة الفول عبر الإنترنت ، وهي متشابهة بشكل أساسي. هنا أريد التحقق بشكل رئيسي من خلال الكود. بعد كل شيء ، المعرفة التي تعلمتها هي نفسها ، لقد تعلمت Java ، والشيء الأكثر أهمية هو ممارسة التدريب العملي ، حتى أتمكن من تذكرها أكثر.
فيما يلي وصف لدورة حياتها ، والتي نتحقق منها من خلال العرض التوضيحي.
يوضح الشكل التالي الترتيب الذي يتم فيه تنفيذه.
1. إنشاء فئة LiftCycle لتنفيذ 5 طرق واجهة: Beanfactoryaware ، Beannameaware ، التهيئة ، التخلص من القابلية للتخلص ، ApplicationContextaware
حزمة cuiyw.spring.service ؛ استيراد org.springframework.beans.beansexte ؛ org.springframework.beans.factory.disposablebean ؛ استيراد org.springframework.beans.factory.initializingbean Beanfactoryaware ، Beannameaware ، initializingBean ، DiscorableBean ، ApplicationContextAware {Private String Name ؛ السلسلة العامة getName () {system.out.println ("getName name ="+name) ؛ اسم العودة } public void setName (اسم السلسلة) {system.out.println ("setName name ="+name) ؛ this.name = name ؛ } public void بعد propertiesset () يلقي الاستثناء {// tode method method method system.out.println ("initializationBean.afterPropertiesset ()") ؛ } public void setBeanName (string arg0) {// todo method method method method system.out.println ("beannameaware.setbeanname") ؛ } public void setBeanfactory (beanfactory arg0) يلقي beansexception {// todo method method method system.out.println ("beanfactoryaware.setBeanfactory") ؛ } public void Dorting () يلقي استثناء {// todo method method method system.out.println ("displablebean.destroy") ؛ } public void myinit () {system.out.println ("【init-method】 استدعاء طريقة التهيئة المحددة بواسطة خاصية init-method من <bean>") ؛ } public void myDestory () {system.out.println ("【تدمير الأساليب】 استدعاء طريقة التهيئة المحددة بواسطة خاصية تدمير الأساليب لـ <bean>") ؛ } public void setapplicationContext (ApplicationContext arg0) يلقي beansexception {// todo method method method system.out.println ( }}2. سجل واجهة InstantiationAwareBeanPostProcessor
حزمة cuiyw.spring.service ؛ استيراد java.beans.propertydescriptor ؛ استيراد org.springframework.beans.beansexce ؛ myinstantiationawareBeanPostProcessor يطبق instantiationawareBostProcessor {كائن عام postprocessafterinitialization (كائن الفول ، السلسلة beanname) يلقي beansexception عودة الفول } الكائن العام postprocessbeforeInitialization (كائن فول ، سلسلة beanname) يلقي beansexception {// todo method method method system.out.println ("instantiationawareBoStProcessor.PostProcessBeforeInitialization") ؛ عودة الفول } يلقي Boolean PostprocessAfterInstantiation العامة (كائن الفول ، سلسلة Beanname) Beansexception {// TODO Method Method Method System. العودة صحيح. } الكائن العام postprocessbeforeinstantantiation (الفئة <؟> beanclass ، سلسلة beanname) يلقي beansexception {// todo method method method system.out.println ("" العودة لاغية. } PROPERTIONALSVALUES PostProcessPropertyValues (PropertyValues PVS ، PropertyDescriptor [] PDS ، Object Bean ، String Beanname) يرمي beansexception {// todo todo method method suge.out.println ( إرجاع PVS ؛ }}3. سجل واجهة BeanPostProcessor
في الواقع ، يرث InstantiationAwareBeanPostProcessorborcors الفاصولياء ، لذلك قمت أيضًا بتطبيق طريقة واجهة BeanPostProcessor أعلاه.
حزمة cuiyw.spring.service ؛ استيراد org.springframework.beans.beansexte TODO METRODATION METLOTION SYSTEM.UT.PRINTLN ("BeanPostProcessor.PostProcessAfterInitialization") ؛ عودة الفول } الكائن العام postprocessbeforeInitialization (كائن فول ، سلسلة beanname) يلقي beansexception {// todo method method method system.out.println ("beanpostprocessor.postprocessbeforeinitialization") ؛ عودة الفول }}4. سجل واجهة BeanfactoryPostProcessor
حزمة cuiyw.spring.service ؛ استيراد org.springframework.beans.beansexte MyBeanFactoryPostProcessor تنفذ beanfactorypostprocessor {public void postprocessBeanfactory (configurableListableBeanfactory Arg0) يلقي beansexception {// tode method method method sustem.out.println ( }}5. تكوين في السياق
سأقوم بتعديله بناءً على العرض التجريبي للمدونة السابقة. من أجل الحصول على تدخل آخر ، سأقوم بإزالة الخدمة أولاً.
<؟ XSI: schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id = "Beanpostprocessor" id = "instantiationAwareBeAnPostProcessor"> </bean> <bean id = "beanfactorypostprocessor"> </bean> <bean id = "lifecycle" init-method = "myinit" destroy-method = "mydestory"> <property name = "name" value = "cuiyw1"
6. استخدم الفاصوليا بشكل رئيسي
حزمة cuiyw.springaop ؛ استيراد org.springframework.beans.factory.beanfactory cuiyw.spring.service.lifecycle ؛ تطبيق الفئة العامة {public static void main (string [] args) {applicationContext context = new classPathmLapplicationContext (سلسلة جديدة [] {"ApplicationContext.xml"}) ؛ مصنع Beanfactory = السياق ؛ دورة حياة دورة الحياة = Factory.getBean ("دورة الحياة" ، دورة الحياة. Lifecycle.setName ("cuiyw2") ؛ System.out.println ("Lifecycle.Name ="+LifecyCle.getName ()) ؛ ((classPathxMlapplicationContext) المصنع) .registerShutDownHook () ؛ /*Service=(IService)factory.getBean("Servicea ") ؛ Service.Service ("Cuiyw Servicea") ؛ Service = (iservice) factory.getBean ("serviceImpl") ؛ Service.Service ("Cuiyw ServiceImpl") ؛ */}}7. أدخل نتيجة الطباعة
يمكن العثور على أن ترتيب الإخراج هو في الأساس نفس ترتيب الشكل أعلاه.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.