Red de conocimiento informático - Problemas con los teléfonos móviles - Ciclo de vida de primavera

Ciclo de vida de primavera

En el método de actualización(), las operaciones principales son las siguientes:

Los primeros tres métodos pertenecen al ensamblaje del Bean y la preparación del entorno. Los primeros tres métodos pertenecen al ensamblaje de frijoles y a la preparación del entorno. Relaciones Wire Bean mediante el procesamiento de xml y anotaciones.

invokeBeanFactoryPostProcessors()

En este método, BeanDefinitionRegistryPostProcessor y BeanFactoryPostProcessor ejecutarán el método postProcessBeanDefinitionRegistry() de BeanDefinitionRegistryPostProcessor y el método postProcessBeanFactory() de BeanFactoryPostProcessor.

RegisterBeanPostProcessors(beanFactory);

Estos dos pasos se pueden resumir en crear una instancia de BeanPostProcessor, llamando al método beanFactory.getBean(ppName, BeanPostProcessor.class) para crear una instancia del objeto BeanPostProcessor. y se coloca en la colección BeanPostProcessor mantenida por BeanFactory para que se puedan crear instancias de otros objetos más adelante.

Proporciona un método para determinar si existe un BeanPostProcessor en el contenedor y, de ser así, ejecuta el método InstantiationAwareBeanPostProcessor. Método postProcessBeforeInstantiation().

La anotación indica que esto proporcionará al BeanPostProcessor la oportunidad de devolver un objeto proxy. Pero el objeto proxy se crea en función de targetSource.

La creación de instancias del Bean se realiza obteniendo el constructor y luego mediante la reflexión.

Este método es un método de llenado antes de la inyección de propiedades. Debido a que no manejamos la inyección de propiedades a través de anotaciones cuando inicialmente mantuvimos la relación Bean, este es un buen método. Por ejemplo, podemos pasar @ Resource para encontrar. Bean en el que se van a inyectar las propiedades y luego asocia las propiedades que se van a inyectar con el Bean.

A través de la configuración xml y la ejecución del método postProcessPropertyValues ​​de InstantiationAwareBeanPostProcessor, hemos ensamblado completamente un Bean y todas las relaciones de propiedades del bean. El siguiente paso es realizar la inyección de propiedad y crear un objeto mediante reflexión según el tipo de propiedad inyectada.

Ambos métodos son métodos de devolución de llamada que permiten al Bean conocer su número de existencia en el contenedor y el beanFactory al que pertenece, y nos permiten manipular objetos instanciados en el beanFactory.

Aquí hay un huevo de Pascua: si un Bean que implementa la interfaz BeanFactoryAware llama al método setBeanFactory() usando beanFactory.getBean(), entonces resolverá el problema de llamada del bucle procesando el método con anticipación.

Se utiliza para devolver una clase contenedora Bean o Bean con sus propiedades completamente completadas.

Ejecutar el método de inicialización.

El objeto proxy se puede generar aquí a través del

método postProcessAfterInitialization de la clase AbstractAutoProxyCreator

Este método crea el objeto desechableBeanAdapter como un bean de una sola vez y. ajusta dos métodos de destrucción diferentes para proporcionar un punto de entrada de destrucción unificado.

Inicie el contenedor web para proporcionar procesamiento comercial.

Cuando se detiene el contenedor, se llama al método contextDestroyed de ContextLoaderListener. Ejecute el método de destrucción

Inicialice el contexto de la aplicación, complete la creación de BeanFactory que mantiene la relación Bean de todo el contenedor y cree una instancia de BeanFactoryPostProcessor para completar el registro de beans personalizados y la modificación de las propiedades del Bean. Cree una instancia del objeto BeanPostProcessor para proporcionar múltiples puntos de extensión para procesos posteriores de creación de beans, como la creación de objetos proxy para el bena de destino. Ejecute el método postProcessBeforeInstantiation de InstantiationAwareBeanPostProcessor para comenzar a construir el bean y ejecute el método postProcessPropertyValues ​​​​de InstantiationAwareBeanPostProcessor para resolver las dependencias de propiedad del método de anotación. Complete la inyección de propiedades de todos los objetos y ejecute múltiples métodos Aware en secuencia para brindar conocimiento sobre beans y beanFactory. Ejecute el método postProcessBeforeInitialization de BeanPostProcessor, ejecute el método afterPropertiesSet() y ejecute el método init-method para realizar algunas operaciones de inicialización, ejecute el método postProcessAfterInitialization de BeanPostProcessor para crear un proxy para el objeto con las mejoras recomendadas. Cree un DesechableBeanAdapter adaptado para destroyMethod y desechableBean, y espere a que finalice el contenedor antes de llamar al método de destrucción. Realice el procesamiento comercial, cierre el contenedor y ejecute el método destroy().