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