[Spring] Resumen del código fuente del ciclo de vida del frijol
1. Verificación del caso
Defina dos beans A, B e implemente tres puntos de extensión de MyBeanFactoryProcess, MyBeanProcessor, MyInstantiationAwareBeanPostProcessors
<?xml version="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/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="a" class="com.sgg.bean.A" init-method="init"/>
<bean id="b" class="com.sgg.bean.B"/>
<bean id="myBeanFactoryProcess" class="com.sgg.process.MyBeanFactoryProcess"/>
<bean id="myBeanProcessor" class="com.sgg.process.MyBeanProcessor"/>
<bean id="myInstantiationAwareBeanPostProcessors" class="com.sgg.process.MyInstantiationAwareBeanPostProcessors"/>
</beans>
UN
B
MyBeanFactoryProcess
`MiProcesadorBean
MyInstantiationAwareBeanPostProcesadores
resultado de salida
2. Resumen
2.1 Postprocesador BeanFactory
Después de crear la fábrica de beans para analizar y generar bd, podemos obtener el objeto de la fábrica de beans implementando BeanFactoryPostProcessor y modificar la información de definición del bean iniciado.
2.2 InstanciaciónAwareBeanPostProcessor
Antes de instanciar el bean, podemos implementar InstantiationAwareBeanPostProcessor y reescribir el método postProcessBeforeInitialization para agregar un objeto al contenedor y finalizar la instanciación del bean actual.
Después de instanciar el bean, podemos implementar InstantiationAwareBeanPostProcessor y reescribir el método postProcessAfterInstantiation para devolver verdadero o falso para decidir si se realiza el llenado de atributos.
2.3 Postprocesador de Bean
Antes de inicializar el bean, podemos implementar BeanPostProcessor para reescribir el método postProcessBeforeInitialization para cambiar el bean correspondiente al beanName actual
Después de inicializar el bean, podemos implementar BeanPostProcessor para reescribir el método postProcessAfterInitialization para obtener el objeto bean después de la inicialización.