Pregunta

Soy consciente del hecho de que el orden de carga de los beans está implícitamente determinado por dependencias y dependencias transitivas.

Imagine que tiene un conjunto de beans anotados que le proporcionan algún tipo de metadatos que desea aplicar a otro conjunto de AwareBeans.De modo que solo después de recopilar todos los metadatos de N beans, solo después de eso podrá publicar el proceso de los AwareBeans.Normalmente usas org.springframework.beans.factory.config.BeanPostProcessor para este tipo de cosas.¿Cómo lidiar con el pedido?Creo que incluso establecer depends-on explícitamente no tiene prioridad sobre las dependencias en cuanto al orden de carga, ¿verdad?

Hay una interfaz org.springframework.core.Ordered eso solo determina el orden de los beanPostProcessors que se aplican, pero no el orden de los beans.

Podría usar org.springframework.beans.factory.config.BeanFactoryPostProcessor pero la definición del bean no tiene suficiente información antes de la creación de instancias del bean.Por ejemplo beanDef.getBeanClass() devuelve el nombre de la clase de frijol, etc.

¿Es esa otra forma en la que podrías pensar en cómo hacer lo que quiero?

¿Fue útil?

Solución 2

Lo resolví usando org.springframework.beans.factory.config.BeanFactoryPostProcessor y cargar clases mediante el cargador de clases para poder usar Reflection para capturar las anotaciones.Creo que no debería romper nada porque luego, cuando Spring cargará la clase, el cargador de clases de clases de bean verifica si la clase ya está cargada y, de ser así, no la carga.De lo contrario lo carga.

Otros consejos

Puede:

a) Inyecte todos sus beans de metadatos en su BeanPostProcessor.

b) Haga que su posprocesador obtenga activamente todos los beans de metadatos del contexto de la aplicación al inicio.

Cada forma tiene pros y contras, pero el efecto es el mismo:después BeanPostProcessor Después de la construcción, todos los beans de metadatos también estarán postconstruidos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top