Primavera 5.x trip Fuente treinta y nueve getBean Procesador extensión de 4,5

La figura no menos

Aquí Insertar imagen Descripción

InstantiationAwareBeanPostProcessor 的 和 postProcessProperties postProcessPropertyValues

Esto es lo que llamamos auto-ensamblaje, interna CommonAnnotationBeanPostProcessory AutowiredAnnotationBeanPostProcessorel manejo de procesador para inyección.
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
postProcessPropertyValuesSe ha expirado.
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
De hecho, casi todo el procesamiento. Así que podemos estar aquí en sus propias extensiones, objetos han conseguido, y lo que no puede hacer lo que es correcto, no se ha demostrado específicamente.

initializeBean de invokeAwareMethods finalización de la inyección comenzó inicializado

establece Principalmente algunas propiedades, hay una más importante es BeanFactoryAware, que se puede obtener BeanFactory.
Aquí Insertar imagen Descripción
Por ejemplo, nos propia realización se puede obtener esta información, es mirada más simple como:
Aquí Insertar imagen Descripción

applyBeanPostProcessorsBeforeInitialization antes de la inicialización

Si regresa null, a continuación, volver directamente, que no se continúe llegar a un acuerdo, por lo que aquí realmente pueden organizar otros procesadores de mango, un procesador personalizado directamente de vuelta null, regresó.
Aquí Insertar imagen Descripción
De hecho, esto es, para beanalgunas operaciones, nada especial.
Aquí Insertar imagen Descripción

invokeInitMethods realizan método de inicialización

Principalmente la aplicación implementa InitializingBeanla interfaz afterPropertiesSetmétodo:
Aquí Insertar imagen Descripción

Algunos métodos personalizados invokeCustomInitMethod

Que se beandefine en el conjunto initMethodName:
Aquí Insertar imagen Descripción

real

Sólo tiene que escribir la definición de un método de clase:

public class PoJo {
    public void init(){
        System.out.println("自定义initMethodName");
    }
}

código de ensayo

Se establece entonces una definición registrada frijol InitMethodName.

    @Test
    public void invokeCustomInitMethodTest() throws Exception {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
        applicationContext.register(MyConfig.class);
        AnnotatedBeanDefinition annotatedBeanDefinition=new AnnotatedGenericBeanDefinition(PoJo.class);
        annotatedBeanDefinition.setInitMethodName("init");
        applicationContext.registerBeanDefinition("myBean",annotatedBeanDefinition);
        applicationContext.refresh();
    }

Aquí Insertar imagen Descripción

Después de la inicialización applyBeanPostProcessorsAfterInitialization

Y un tratamiento similar antes de la inicialización, no dicen.
Aquí Insertar imagen Descripción

Pues bien, hoy aquí, esperamos estudio ayuda y entender, no rocíe el Gran Dios ver, comprender solamente su propio aprendizaje, capacidad limitada, por favor excusa.

Publicados 235 artículos originales · ganado elogios 74 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/wangwei19871103/article/details/105175013
Recomendado
Clasificación