Java

Spring - работа с Бинами.

У нас создаются бины от одного интерфейса какой bean отдаст нам спринг при обращении?
Если в Spring-контексте определено несколько бинов, которые реализуют один и тот же интерфейс, то при обращении к этому интерфейсу можно использовать аннотации `@Qualifier` или `@Primary`, чтобы указать, какой именно бин должен быть использован.

Аннотация `@Qualifier` позволяет указать конкретное имя бина, которое определено в контексте:

public interface MyInterface {}

@Component("MyFirstImplementation")
public class MyFirstImplementation {}

@Component("MySecondImplementation")
public class MySecondImplementation {}

@Service
public class MyService {
@Autowired
@Qualifier("MyFirstImplementation")
private MyInterface myInterface;
}


В данном примере мы определяем две реализации интерфейса `MyInterface` - `MyFirstImplementation` и `MySecondImplementation`. Затем, при инъекции бина в сервис `MyService`, мы используем аннотацию `@Qualifier`, чтобы указать, что нам нужен именно бин с именем `"MyFirstImplementation"`.

Аннотация `@Primary` позволяет указать один основной бин, который будет использован по умолчанию:

public interface MyInterface {}

@Component
@Primary
public class MyFirstImplementation {}

@Component
public class MySecondImplementation {}

@Service
public class MyService {
@Autowired
private MyInterface myInterface;
}


В данном примере мы определяем две реализации интерфейса `MyInterface` - `MyFirstImplementation` и `MySecondImplementation`. Однако, мы также указываем аннотацию `@Primary` для `MyFirstImplementation`, что делает его основным бином для этого интерфейса. При инъекции бина в сервис `MyService`, мы не указываем конкретное имя бина, поэтому будет использован `MyFirstImplementation` как основной бин.
ДФ
Дима Фурзиков
1 218
Лучший ответ
Александр Киль сам-то понял что скопировал?
каким образом "обращаешься"?

у бина своё вполне конкретное название (если только ты не постарался обозвать разные бины одинаковым погонялом... но тебе спринг уже при запуске по башке даст за такие дела...)
Александр Киль
Александр Киль
86 041