Sobes.tech
Junior — Middle

Ինչպե՞ս կարելի է կանխել կոնֆլիկտը, երբ օգտագործվում են երկու նույն բիները Spring կոնտեյներում։

sobes.tech AI

Պատասխան AI-ից

Spring կոնտեյներում հակամարտություն է առաջանում, եթե երկու բին ունեն նույն անունը (հատկանիշը): Հակամարտությունը կանխելու համար՝

  • Օգտագործեք տարբեր անուններ բիների համար @Component("անուն") նշումով կամ XML/Java կոնֆիգուրացիայում:
  • Օգտագործեք @Qualifier նշումը կախվածության ներմուծման ժամանակ՝ հստակ նշելու համար, թե որ բինն է պետք օգտագործել:
  • Մեկ բինին դարձնել @Primary, որպեսզի հակամարտության դեպքում այն օգտագործվի որպես նախընտրելի:

Օրինակ @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;
    }
}