Sobes.tech
Junior — Middle

Wie kann man einen Konflikt vermeiden, wenn man zwei gleiche Beans im Spring-Container verwendet?

sobes.tech KI

Antwort von AI

Im Spring-Container tritt ein Konflikt auf, wenn zwei Beans denselben Namen (Identifikator) haben. Um Konflikte zu vermeiden:

  • Verwenden Sie unterschiedliche Namen für Beans mit der Annotation @Component("Name") oder in der XML/Java-Konfiguration.
  • Verwenden Sie die Annotation @Qualifier bei der Dependency-Injektion, um explizit anzugeben, welcher Bean verwendet werden soll.
  • Machen Sie einen der Beans @Primary, damit er standardmäßig bei Konflikten verwendet wird.

Beispiel mit @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;
    }
}