Sobes.tech
Junior — Middle

¿Cómo se puede evitar un conflicto al usar dos beans iguales en el contenedor de Spring?

sobes.tech AI

Respuesta de la IA

En el contenedor de Spring, ocurre un conflicto si dos beans tienen el mismo nombre (identificador). Para prevenir el conflicto, se puede:

  • Usar diferentes nombres para los beans con la anotación @Component("nombre") o en la configuración XML/Java.
  • Usar la anotación @Qualifier al inyectar la dependencia, para indicar claramente qué bean usar.
  • Hacer uno de los beans @Primary, de modo que se utilice por defecto en caso de conflicto.

Ejemplo con @Qualifier:

@Component("beanOne")
public class BeanOne {}

@Component("beanTwo")
public class BeanTwo {}

@Service
public class MyService {
    private final BeanOne beanOne;

    public MyService(@Qualifier("beanOne") BeanOne beanOne) {
        this.beanOne = beanOne;
    }
}