Prefacio
El artículo anterior aprendió principalmente sobre la configuración, la inyección y el editor de propiedades personalizadas de Beans. Hoy, nos familiaricemos con el ciclo de vida de los frijoles.
Cualquier cosa tiene su propio ciclo de vida, el comienzo, el fin de la vida. Con lo que está más familiarizado es el ciclo de vida de los servlets. Al igual que los servlets, los frijoles de primavera también tienen su propio ciclo de vida.
El ciclo de vida es un sustantivo muy común en el desarrollo, y básicamente cada lenguaje de programación puede encontrarlo asociado con él. También he buscado muchos ciclos de vida de bean en línea, y son básicamente lo mismo. Aquí principalmente quiero verificar a través del código. Después de todo, el conocimiento que aprendí es el mismo, aprendí Java, y lo más importante es practicar práctico, para que pueda recordarlo más.
A continuación se muestra una descripción de su ciclo de vida, que verificamos a través de la demostración.
La siguiente figura muestra el orden en el que se ejecuta.
1. Cree la clase Liftcycle para implementar 5 métodos de interfaz: BeanFactoryaware, Beannameaware, InitializingBean, DisposableBean, ApplicationContextAware
paquete cuiyw.spring.service; import org.springframework.beans.beansexception; import org.springframework.beans.factory.beanfactory; import og.springframework.beanss.factory.beanfactoryaware; import og.springframework.beans.factory.beannameaware; importar; import org.springframework.beans.factory.disposableBean; import org.springframework.beans.factory.initializingbean; import org.springframework.context.applicationContex BeanFactoryaware, Beannameaware, InitializingBean, DisposableBean, ApplicationContextAware {Nombre de cadena privada; public String getName () {System.out.println ("getName name ="+name); nombre de retorno; } public void setName (nombre de cadena) {System.out.println ("setName name ="+name); this.name = name; } public void AfterPropertIesset () lanza la excepción {// TODO Auto Generated Method stub System.out.println ("InitializingBean.AfterPropertIesset ()"); } public void setBeanName (string arg0) {// toDO método generado automático stub system.out.println ("beannameaware.setBeanName"); } public void setBeanFactory (BeanFactory Arg0) lanza BeanSexception {// TODO Auto Generado Método Stub System.out.println ("BeanFactoryaware.setBeanFactory"); } public void Destroy () lanza la excepción {// TODO Auto Generated Method stub System.out.println ("DisposableBean.Destroy"); } public void myInit () {System.out.println ("【Init-Method】 Llamando al método de inicialización especificado por la propiedad Init-Method de <Bean>"); } public void myDestory () {System.out.println ("【Destroy Método】 Llamando al método de inicialización especificado por la propiedad Destroy Method de <Bean>"); } public void setApplicationContext (ApplicationContext Arg0) lanza BeanSexception {// TODO Método Generado automático stub System.out.println ("ApplicationContextAware.SetApplicationContext"); }}2. Registre la interfaz instantiationAweBeBeanPostProcessor
paquete cuiyw.spring.service; import java.beans.propertyDescriptor; import org.springframework.beans.beansexception; import org.springframework.beanss.propertyvalues; import og.springfframework.beans.factory.config.instantiatiatiatiationweBeBeBeBeBeAnpheSprocessor; MyInstantiatiationAweBeBeanPostProcessor implementa instanciariationAweBeBeAnpostProcessor {Public Object PostProcessAfterInitialization (Object Bean, String BeanName) lanza Beansexception {// TODO Método Generado Autorgenerado stub.out.Println ("InstantiationAweBeanPosTproCessor.postPosTproCessafterinitialization"););); Bean de regreso; } Public Object PostProcessBeForeinitialization (objeto bean, string beanName) arroja beansexception {// tODO método auto-generado stub system.out.println ("instantiatiationAweBeBeanPostProcessor.postProcessBeSbeSbeForeInicialization"); Bean de regreso; } public boolean PostProcessAfterInstantiation (Object Bean, String BeanName) lanza BeanSexception {// TODO Auto Generated Method Stub System.out.println ("InstanciatiationAweBeanPostProcessor.PostProcessAfterInstantiatiation"); devolver verdadero; } Public Object PostProcessBeForeInstantiation (class <?> BeanClass, String BeanName) arroja BeanSexception {// TODO Método Generado automático stub System.out.println ("InstanciatiationAweBeBeanPostProcessor.postProcessBeSbeForeinstantiation"); regresar nulo; } Public PropertyValues PostProcessPropertyValues (PropertyValues PVS, PropertyDescriptor [] PDS, Object Bean, String BeanName) arroja BeanSexception {// TODO Método Autorgenerado stub System.out.println ("InstantiationAweBeBeanPostPostProcess.PoscessProcessPrepertyvalValues");;;; devolver PVS; }}3. Registre la interfaz BeanPostProcessor
De hecho, InstanciatiationAweBeBeanPostProcessor hereda el postesprocesador de frijoles, por lo que también implementé el método de la interfaz BeanPostProcessor anterior.
paquete cuiyw.spring.service; import org.springframework.beanss.beansexception; import org.springframework.beans.factory.config.beanPostProcessor; public class myBeanPostProcessor implementa beanpostProcessor {public Object PostProcessAfteriniatialization (Object Bean, Stry Name) sholexception { Método generado por automóviles System.out.println ("BeanPostProcessor.PostProcessAfterInitialization"); Bean de regreso; } Public Object PostProcessbeForeinitialization (objeto bean, string beanName) arroja beansexception {// tODO método auto generado stub system.out.println ("beanpostprocessor.postprocessbeforeinitialization"); Bean de regreso; }}4. Registre la interfaz BeanFactoryPostProcessor
paquete cuiyw.spring.service; import org.springframework.beanss.beansexception; import org.springframework.beans.factory.config.beanFactoryPostPoScessor; importe org.sspringframework.beans.factory.config.configurablelistableBeanFactory; public class MyBeanFactoryment BeanFactoryPostProcessor {public void PostProcessBeanFactory (configuableListableBeanFactory Arg0) arroja BeanSexception {// TODO Método Generado automático Stub System.out.println (" }}5. Configurar en el contexto
Lo modificaré en función de la demostración del blog anterior. Para tener otra interferencia, eliminaré el servicio primero.
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xsi: schemalocation = "http://www.springframework.org/schema/Beansshttp://www.springframework.org/schema/beans/spring-beanss.xsd"> <bean id = "beanproscesporsporspress"> </bean> <bean id = "instantiatiatiationAweBeBeanPostProcessor"> </bean> <bean id = "beanFactoryPostProcessor"> </reme> <bean id = "lifecycle" init-method = "myInit" destruye-metod = "myDestory"> <Property name = "name" valor = "cuiyw1"> </spertome> </bean> </beans>
6. Use frijoles en main
paquete cuiyw.springaop; import org.springframework.beans.factory.beanFactory; import org.springframework.context.applicationContext; import og.springframework.context.support.classpathxMlaPplicationContext; import cúiyw.spring.iservice.iservice.iservice.iservice; Cuiyw.spring.service.lifecycle; public class App {public static void main (String [] args) {applicationContext context = new ClassPathXMLApPlicationContext (new String [] {"ApplicationContext.xml"}); BeanFactory Factory = context; LifeCycle Lifecycle = factory.getBean ("Lifecycle", Lifecycle.class); lifecycle.setName ("Cuiyw2"); System.out.println ("lifecycle.name ="+lifecycle.getName ()); ((ClasspathxmLapPlicationContext) fábrica) .RegisterShutdownHook (); /*Service=(iservice)Factory.getBean("ServiceA "); servicio.service ("Cuiyw Servicea"); servicio = (iservice) factory.getBean ("ServiceImpl"); servicio.service ("Cuiyw ServiceImpl"); */}}7. Ingrese el resultado de la impresión
Se puede encontrar que el orden de salida es básicamente el mismo que el orden de la figura anterior.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.