Prefacio
En el artículo anterior, se menciona que a través de interfaces como InicializingBean y desechable, se pueden realizar algunas operaciones personalizadas para la inicialización y destrucción de frijoles. Una cosa a tener en cuenta es que es solo una operación después de que un contenedor instanciará el bean. En el mundo de la primavera, si desea hacer algo sobre el proceso de instanciación, como desarrollador de negocios ordinario, obviamente no necesita heredar ApplicationContext o BeanFactory, porque Spring Container nos proporciona algunas interfaces, lo que nos permite extender la operación de inicialización de BeanFactory en forma de complementos, incluido nuestro protagonista de hoy - BeanpostPossor (presente a Interface a Interface.
Código fuente, echar un vistazo
Este uso es muy simple. Solo tiene dos métodos. Implementamos nuestro propio BeanPostProcessor, y Spring puede registrarlo automáticamente en el contenedor.
donde el método anterior se ejecuta después de la instancia de frijol, después de la configuración de la propiedad pero antes del método de inicialización; después del método se ejecuta después de varios métodos de inicialización.
Hablando de esto, algunas personas pueden preguntarse, ¿cuál es la diferencia entre esta y otras interfaces de inicialización en el ciclo de vida? Otros métodos de inicialización también pueden modificar los frijoles. Esta pregunta es buena. Hablemos sobre la diferencia esencial entre esta interfaz y la interfaz desechable inicializadora y el método personalizado de destrucción del inicio.
Hay dos BPP especiales aquí. Tengo que decir que si necesita personalizar una anotación similar a la función de inyección de @autowire o @inyect (puede usar inyectionMetadata), los BPP ordinarios pueden no satisfacer sus necesidades y puede usar dos BPP especiales.
MergeBeanDefinitionPostProcessor (en lo sucesivo denominado MBDPP)
InstanciatiationAwarebeanPostProcessor (en lo sucesivo denominado IABPP)
Todos heredan de BPP, pero el punto de entrada en el proceso de creación de frijoles de resorte es diferente de BPP ordinario.
Interfaz de InstanciationAwarebeanPostProcessor
Ver los comentarios
Método de estantería posterior a la foresta
Verifique el método CrearBean de AbstractAUTOWIRECAPABLEBENFactory (este método es el método central para crear frijoles en contenedores de resorte). Puede ver que la estantería posterior al proceso es antes de la instanciación de frijoles, la estantería posterior a la propagación se establece después de la instancia y antes de la inyección de Autowire. Generalmente se usa internamente en el marco de primavera, pero aquí hay un gran potencial. Use PostProcessbeForeforeinstantiation para generar objetos proxy (el método general es hacer que el retorno de PostProcesseBeforeinstantiation no sea nulo, lo que interrumpirá el proceso posterior de crear instancias de Bean. El objeto devuelto por este método se utilizará como la instancia de Bean). Ver el código fuente:
Método PostProcessPropertyValues
Use PostProcessPropertyValues para completar varias operaciones en propiedades, analizando metadatos en anotaciones, etc. Inyección de Spring @AUTOWIRE, JSR330 @Inject y JSR250 @Resource y otras operaciones de inyección se completan a través de este método.
Esta interfaz se usa en Spring, y los estudiantes interesados pueden leer el código fuente. Las siguientes son dos implementaciones típicas.
AutowiredannotationBeanPostProcessor
AbstractAutoproxyCreator
Interfaz fusionDeFinitionPostProcessor
Esta interfaz pasa en una raíz de definición, lo que nos permite modificar la definición del bean. @AutuWiredAnnotationBeanPostProcessor utiliza este método para verificar y registrar a los miembros que deben ser inyectados.
BeanFactoryPostProcessor (BFPP)
Además de BeanPostProcessor, hay otro tipo de cosas que todos saben, es decir, BeanFactoryPostProcessor
BFPP es un complemento de extensión importante para BeanFactory y se puede personalizar con BeanDefinition. Su principal diferencia de BPP es:
De acuerdo, después de decir tanto, echemos un vistazo al diagrama general de flujo de la creación de frijoles de Spring. Solo los nodos más críticos están marcados aquí.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.