Junior — Middle
Чӣ гуна Spring муайян мекунад, ки кадом иҷрои интерфейсро интихоб кунад вақте ки чанд вариант вуҷуд дорад, бо @Autowired?
sobes.tech AI
Ҷавоб аз AI
Коли дар Spring вуҷуд доранд чандин татбиқҳо барои як интерфейс ва истифода мешавад анотацияи @Autowired, чаҳорчӯба кӯшиш мекунад, ки муайян кунад, ки кадом татбиқро бояд ворид кунад, бо риояи қоидаҳои зерин:
- Барои номи бин: Spring ҷустуҷӯ мекунад бин, ки номи он мувофиқ бо номи майдон ё параметри аст, ки воридот дар он сурат мегирад.
- Анотацияи
@Qualifier: Агар чанд номзад бошад, метавон explicitly муайян кард, ки кадом бин бояд истифода шавад, бо истифода аз@Qualifier("номиБин"). - Анотацияи
@Primary: Агар яке аз биноҳо ҳамчун@Primaryнишон дода шавад, он ҳамчун пешфарз интихоб мешавад. - Истисно дар ҳолати номуайянӣ: Агар ягон шароит кӯмак накунад, Spring истиснои
NoUniqueBeanDefinitionExceptionхоҳад партофт.
Масалан:
@Component
@Primary
public class ServiceImpl1 implements MyService {}
@Component
public class ServiceImpl2 implements MyService {}
@Autowired
private MyService myService; // бо сабаби `@Primary`, ServiceImpl1 ворид мешавад
@Autowired
@Qualifier("serviceImpl2")
private MyService myService2; // explicitly нишон дода шудааст ServiceImpl2