[Primavera] Resumo da análise do código-fonte do ciclo de vida do bean

[Primavera] Resumo do código-fonte do ciclo de vida do bean

imagem-20220403143637972

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

imagem-20220403144206176

B

imagem-20220403144218921

Processo MyBeanFactory

imagem-20220403144253316

`MyBeanProcessor

imagem-20220403144308958

MyInstantiationAwareBeanPostProcessors

imagem-20220403144325799

resultado de saída

imagem-20220403143801713

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.

Acho que você gosta

Origin blog.csdn.net/JAVAlife2021/article/details/123937456
Recomendado
Clasificación