Sobes.tech
Junior — Middle

Come evitare un conflitto quando si utilizzano due bean uguali nel contenitore Spring?

sobes.tech AI

Risposta dell'AI

Nel contenitore Spring, si verifica un conflitto se due bean hanno lo stesso nome (identificatore). Per prevenire il conflitto:

  • Usare nomi diversi per i bean con l'annotazione @Component("nome") o nella configurazione XML/Java.
  • Usare l'annotazione @Qualifier durante l'iniezione delle dipendenze per indicare esplicitamente quale bean usare.
  • Rendere uno dei bean @Primary, così verrà usato di default in caso di conflitto.

Esempio 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;
    }
}