Sobes.tech
Junior — Middle

Kaip išvengti konflikto naudojant du vienodus bean'us Spring konteineryje?

sobes.tech AI

Atsakymas iš AI

Spring konteineryje konfliktas atsiranda, jei du bean'ai turi tą patį pavadinimą (identifikatorių). Norint išvengti konflikto:

  • Naudokite skirtingus pavadinimus bean'ams su @Component("pavadinimas") anotacija arba XML/Java konfigūracijoje.
  • Naudokite @Qualifier anotaciją priklausomybių injekcijai, kad aiškiai nurodytumėte, kurį bean'ą naudoti.
  • Padarykite vieną iš bean'ų @Primary, kad jis būtų naudojamas pagal numatytuosius nustatymus konfliktų atveju.

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