Middle
Ако биновете са обявени чрез @Configuration и @Bean, как работи @Qualifier и какво е името на бина?
sobes.tech AI
Отговор от AI
Когато биновете са обявени чрез @Configuration и @Bean, Spring ги създава с имена, съответстващи на името на метода, който връща бина. Например:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
В този случай името на бина е myService.
Анотацията @Qualifier се използва за уточняване на това кой точно бин трябва да бъде внедрен, ако в контекста има няколко бина от един и същи тип. Например:
@Bean
public MyService myService1() { ... }
@Bean
public MyService myService2() { ... }
@Autowired
@Qualifier("myService2")
private MyService service;
Тук @Qualifier указва на Spring да внедри бина с името myService2.
По този начин, @Qualifier работи по името на бина, което по подразбиране съвпада с името на метода, който обявява бина, ако не е указано друго чрез параметъра name в @Bean.