Sobes.tech
Junior — Middle

Hogyan lehet elkerülni a konfliktust, amikor két azonos bean-t használunk a Spring konténerben?

sobes.tech MI

Válasz az MI-től

A Spring konténerben konfliktus lép fel, ha két bean ugyanazzal a névvel (azonosítóval) rendelkezik. A konfliktus elkerülése érdekében:

  • Használjon különböző neveket a bean-ekhez az @Component("név") annotációval vagy XML/Java konfigurációban.
  • Használja az @Qualifier annotációt a függőség injektálásakor, hogy egyértelműen megjelölje, melyik bean-t kell használni.
  • Tegyen az egyik bean-t @Primary-vá, így alapértelmezettként fogja használni konfliktus esetén.

@Qualifier példával:

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