Sobes.tech
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.