Sobes.tech
Назад к вопросам
Junior — Middle
66

Могли бы вы объяснить, что означает аннотация @Primary в контексте Spring?

Ответ от нейросети

sobes.tech AI

Аннотация @Primary в Spring используется для указания предпочтительного бина, если в контексте есть несколько кандидатов для внедрения зависимости одного типа.

Когда Spring сталкивается с несколькими бинами одного типа и не может однозначно выбрать, какой внедрить, можно пометить один из них аннотацией @Primary. Тогда этот бин будет выбран по умолчанию.

Пример:

@Configuration
public class AppConfig {

    @Bean
    public Service serviceA() {
        return new ServiceImplA();
    }

    @Bean
    @Primary
    public Service serviceB() {
        return new ServiceImplB();
    }
}

В этом примере, если где-то в коде требуется бин типа Service без уточнения, Spring внедрит serviceB, так как он помечен @Primary.

Это удобно для управления приоритетами бинов без необходимости явно указывать имя бина при внедрении.