Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
Beans autoconectados por interfaz pero excluyen beans específicos en el momento de la inyección

Actualmente estoy inyectando una lista de Spring @Component que implementan la misma interfaz. Esto funciona bien, sin embargo, quiero inyectar esta misma lista en una instancia de un bean en esa lista para poder actuar sobre todos los demás frijoles en esa lista. No puedo ver cómo excluir un bean específico de esa inyección, puedo filtrar la lista después de inyectarlo, pero esto, por supuesto, da como resultado una excepción de dependencia circular de Spring al inicio. Mi pregunta es, ¿puedo, en el momento de la inyección, decirle a Spring que excluya la clase que se está inyectando de la lista de beans?

 public interface Foo { String doSomething(); }
 @Component public class Foo1 implements Foo { private final List<Foo> foos; public Sample(final List<Foo> foos) { //Don't include Foo1 this.foos = foos; } public String doSomething() { foos.forEach(foo -> foo.doSomething()); return "aString"; } }
 @Component public class Foo2 implements Foo { private final List<Foo> foos; public Sample(final List<Foo> foos) { //Don't include Foo2 this.foos = foos; } public String doSomething() { foos.forEach(foo -> foo.doSomething()); return "anotherString"; } }
 @Component public class Foo3 implements Foo { //and so on
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En lugar de inyectar una lista en el constructor, puede buscar todos los beans de tipo Foo en los métodos doSomething y luego excluir el actual. Para buscar, use cualquiera de los métodos de BeanFactoryUtils , como beanNamesForTypeIncludingAncestors , y luego excluya foo1 , que es el nombre del bean para la clase Foo1 . La búsqueda puede incluso codificarse en un método predeterminado en la interfaz Foo .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda