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

Когда бины объявлены через @Configuration и @Bean, Spring создает их с именами, соответствующими имени метода, который возвращает бин. Например:

Короткий ответ

Что ответить на собеседовании

Когда бины объявлены через @Configuration и @Bean, Spring создает их с именами, соответствующими имени метода, который возвращает бин. Например:

Подробный разбор

Ответ с пояснениями

Когда бины объявлены через @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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее