Sobes.tech
Back to questions
Middle
27

Если бины объявлены через @Configuration и @Bean, как работает @Qualifier и каково имя бина?

Companies where asked
Позитив Технолоджис

Answer from AI

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