Sobes.tech
Junior — Middle

Jak zapobiec konfliktowi przy używaniu dwóch identycznych beanów w kontenerze Spring?

sobes.tech AI

Odpowiedź od AI

W kontenerze Spring występuje konflikt, jeśli dwa beany mają taką samą nazwę (identyfikator). Aby zapobiec konfliktowi:

  • Użyj różnych nazw dla beanów za pomocą adnotacji @Component("nazwa") lub w konfiguracji XML/Java.
  • Użyj adnotacji @Qualifier podczas wstrzykiwania zależności, aby wyraźnie wskazać, który bean ma być użyty.
  • Uczyń jeden z beanów @Primary, wtedy będzie używany domyślnie w przypadku konfliktu.

Przykład z @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;
    }
}