[Primavera] Resumo do código-fonte do ciclo de vida do bean
1. Verificação do caso
Defina dois beans A, B e implemente três pontos de extensão 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>
UMA
B
Processo MyBeanFactory
`MyBeanProcessor
MyInstantiationAwareBeanPostProcessors
resultado de saída
2. Resumo
2.1 BeanFactoryPós-Processador
Depois de criar o bean factory para analisar e gerar bd, podemos obter o objeto bean factory implementando BeanFactoryPostProcessor e modificando as informações de definição do bean iniciado
2.2 InstantiationAwareBeanPostProcessor
Antes de instanciar o bean, podemos implementar InstantiationAwareBeanPostProcessor e reescrever o método postProcessBeforeInitialization para adicionar um objeto ao container e finalizar a instanciação do bean atual
Após instanciar o bean, podemos implementar InstantiationAwareBeanPostProcessor e reescrever o método postProcessAfterInstantiation para retornar true ou false para decidir se deve realizar o preenchimento de atributos
2.3 BeanPostProcessor
Antes de inicializar o bean, podemos implementar BeanPostProcessor para reescrever o método postProcessBeforeInitialization para alterar o bean correspondente ao beanName atual
Após inicializar o bean, podemos implementar BeanPostProcessor para reescrever o método postProcessAfterInitialization para obter o objeto bean após a inicialização.