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
@Qualifierpodczas 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;
}
}