Red de conocimiento informático - Conocimiento del nombre de dominio - El principio del mecanismo de dependencia circular

El principio del mecanismo de dependencia circular

La dependencia circular es en realidad una referencia circular, es decir, dos o más beans interfieren entre sí y eventualmente forman un circuito cerrado. Por ejemplo, A depende de B, B depende de C y C depende de A.

Entre ellos, la solución al problema de dependencia circular del constructor solo puede generar la excepción BeanCurrentlyInCreationException. En la solución al problema de dependencia circular del atributo, Spring usa el método de exponer objetos por adelantado.

Método AbstractBeanFactory.doGetBean():

Si el prototipo de bean se crea antes de obtenerlo, se generará una excepción directamente. El bean prototipo se marca como creado antes de su creación, y la marca se eliminará una vez completada la creación.

La teoría de dependencia circular de Spring se basa en el paso de referencia de Java, que permite establecer cuándo se hace la referencia al El objeto se obtiene más tarde. Las propiedades del objeto, pero el constructor debe configurarse antes de obtener la referencia.

Spring usa el método setXxx o setXxx, o el método setXxx, o el método setXxx. Spring resuelve las dependencias circulares a través de los métodos setXxx o @Autowired. En realidad, se hace exponiendo un objeto ObjectFactory por adelantado. Simplemente coloque ClassA en el constructor llamado para completar la inicialización del objeto. Después de llamar al método setClassB de ClassA, ClassA creó una instancia. Los objetos estarían expuestos al contenedor Spring de antemano a través de ObjectFactory.