Vorwort
Der vorherige Artikel erfuhr hauptsächlich die Konfiguration, Injektion und benutzerdefinierte Eigenschaft von Beans. Lassen Sie uns heute mit dem Lebenszyklus von Bohnen vertraut.
Jede Sache hat seinen eigenen Lebenszyklus, den Anfang, das Ende des Lebens. Was Sie am besten kennen, ist der Lebenszyklus von Servlets. Wie Servlets haben auch Frühlingsbohnen ihren eigenen Lebenszyklus.
Der Lebenszyklus ist ein sehr häufiges Substantiv in der Entwicklung, und im Grunde kann jede Programmiersprache es mit ihm verbunden sein. Ich habe auch viele Bohnenlebenszyklen online gesucht und sie sind im Grunde genommen gleich. Hier möchte ich hauptsächlich den Code überprüfen. Schließlich ist das Wissen, das ich gelernt habe, das gleiche, ich habe Java gelernt, und das Wichtigste ist, praktisch zu praktizieren, damit ich mich mehr erinnern kann.
Unten finden Sie eine Beschreibung seines Lebenszyklus, den wir durch Demo verifizieren.
Die folgende Abbildung zeigt die Reihenfolge, in der sie ausgeführt wird.
1. Erstellen Sie Liftcycle -Klasse, um 5 Schnittstellenmethoden zu implementieren: BeanfactoryAware, BeannameAwary, Initialisierungsbean, DisposableBean, ApplicationContextaware
Paket cuiyw.spring.service; import org.springframework org.springframework.bean.factory.disposableable BeanFactoryAware, BeannameAware, InitializingBean, DisposableBean, ApplicationContextaware {private String -Name; public String getName () {System.out.println ("getName name ="+name); Rückgabename; } public void setName (String name) {System.out.println ("setName name ="+name); this.name = name; } public void AfterProperTieStieSet () löst Ausnahme aus {// todo automatisch generierte Methode stub system.out.println ("initialisationBean.afterPropertieSt ()"); } public void setBeanname (String arg0) {// Todo automatisch generierte Methode stub system.out.println ("BeannameAwary.setBeanname"); } public void setbeanFactory (beanfactory arg0) löscht Beansexception {// Todo automatisch generierte Methode stub system.out.println ("beanfactoryAWare.setbeanFactory"); } public void destroy () löst Ausnahme aus {// Todo automatisch erzeugte Methode stub system.out.println ("DisposableBean.Destroy"); } public void myInit () {System.out.println ("【init-Methode】 Aufruf der init-Methode-Eigenschaft von <Bean>"); } public void myDestory () {System.out.println ("【Zerstören-Methode】 Aufruf als Initialisierungsmethode, die durch das Destroy-Methode-Eigenschaft von <Bean>") angegeben ist; } public void setApplicationContext (ApplicationContext arg0) löst beansexception {// Todo automatisch generierte Methode stub system.out.println ("applicationContextaware.setApplicationContext"); }}2. Registrieren Sie die InstantiationArebeanPostProcessor -Schnittstelle
Paket cuiyw.spring.service; import Java.beans.propertyDescriptor; import org.springframework.beans.beansexception; MyInstantiationAwarebeanPostProcessor implementiert die InstantiationArebeanPostPostProcessor {public Object postProcessafterinitialisierung (Objektbean, String Beanname). Rückzahlung; } öffentliches Objekt postprozessbeForeinitialisierung (Objektbean, String beanname) löscht Beansexception {// Todo automatisch generierter Methode stub system.out.println ("InstantiationArebeanPostProcessor.PostProcessBeforeialization"); Rückzahlung; } public boolean postProcessafterInstantiation (Objektbean, String Beanname) löst Beansexception aus {// Todo automatisch generierte Methode stub system.out.println ("InstantiationArebeanPostPostProcessor.PostProcessafterInstantiation"); zurückkehren; } öffentliches Objekt postProcessBeforeinstantiation (Klasse <?> BeanClass, String beanname) löst beansexception {// todo automatisch generierte Methode Stub system.out.println ("InstantiationArebeanPostProcessor.PostProcessbeFeforinStantiation") aus. null zurückkehren; } public PropertyValues PostprozessPropertyValues (PropertyValues PVS, PropertyDescriptor [] PDS, Objektbean, String Beanname) löst Beansexception aus {// toDo auto-generiertes Methode Stub-System.out.Out.println ("InstantiationArebanpostPostprocessor PVS zurückgeben; }}3. Registrieren Sie die BeanPostProcessor -Schnittstelle
In der Tat erbt InstantiationArebeanPostProcessor BeanPostProcessor, sodass ich auch die Methode der oben beanpostprozessor -Schnittstelle implementiert habe.
Paket cuiyw.spring.service; import org.springframework.bean.beansexception; import org.springframework Beansexception {// Todo automatisch generierte Methode stub system.out.println ("BeanPostProcessor.PostProcessafterInitialisierung"); Rückzahlung; } öffentliches Objekt postProcessBeforeInitialisierung (Objektbean, String beanname) löst Beansexception aus {// Todo automatisch generierter Methode stub system.out.println ("BeanpostProcessor.PostProcessbeforeialization"); Rückzahlung; }}V.
Paket cuiyw.spring.service; import org.springframework.bean.beansexception; import org.springframework MyBeanFactoryPostProcessor implementiert beanfactoryPostProcessor (public void postProcessbeanFactory (configurableListableBeanFactory). }}
5. Konfigurieren Sie im Kontext
Ich werde es basierend auf der Demo des vorherigen Blogs ändern. Um andere Störungen zu haben, werde ich zuerst den Service entfernen.
<? XSI: Schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id = "Beanpostprozessor"> </bean> <bean id = "InstantiationAWarebeanPostProcessor"> </bean> <bean id = "BeanfactoryPostProcessor"> </bean> <bean id = "lifecycle" init-method = "myInit" Destroy-method = "mydestory"> </achachenname = "name" name "name" name "boys" boys "cuiyw1" </ban> </bohnen name "
6. Bohnen in Main verwenden
Paket cuiyw.springaop; import org.springframework.bean.factory.beanfactory; import org.springframework.context.ApplicationContext; Cuiyw.spring.service.lifecycle; public class App {public static void main (string [] args) {applicationContext context = new classPathXmlApplicationContext (neuer String [] {"applicationContext.xml"}); Beanfactory Factory = Kontext; Lifecycle Lifecycle = Factory.getbean ("Lifecycle", Lifecycle.class); Lifecycle.SetName ("cuiyw2"); System.out.println ("LifeCycle.name ="+LifeCycle.getName ()); ((ClassPathXMLApplicationContext) Fabrik) .RegisterShutDownhook (); /*Service=(IService)Factory.getBean("Servicea "); Service.Service ("cuiyw servicea"); Service = (iService) factory.getbean ("serviceImpl"); Service.Service ("cuiyw ServiceImpl"); */}}7. Geben Sie das Druckergebnis ein
Es kann festgestellt werden, dass die Ausgangsreihenfolge im Grunde genommen mit der Reihenfolge der obigen Abbildung übereinstimmt.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.