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` как основной бин.
Аннотация `@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` как основной бин.
Александр Киль
сам-то понял что скопировал?
каким образом "обращаешься"?
у бина своё вполне конкретное название (если только ты не постарался обозвать разные бины одинаковым погонялом... но тебе спринг уже при запуске по башке даст за такие дела...)
у бина своё вполне конкретное название (если только ты не постарался обозвать разные бины одинаковым погонялом... но тебе спринг уже при запуске по башке даст за такие дела...)
Похожие вопросы
- Перечислите основные аннотации Spring
- В чём именно мощь Spring?
- Стоит ли учить Spring если не знаю некоторые темы?
- Не могу подключить css к проекту на Spring MVC, спринг просто не видит его.
- подскажите интернет работу Работа в интернете миф или реальность
- Подскажите пожалуйста, как в данном коде Java сделать так, чтоб при нажатии цифры 3 программа завершала свою работу?
- Идти в колледж и учится ещё 3 года или уже искать работу на java с онли средним образованием?
- Работа со строками Java Разработать программу, которая вводит строку и находит все слова указанной длины n (n вводится).
- Проблема в коде, цикл пропускает строчку и продолжает свою работу без сбоев в остальном.
- Работа в сфере программирования, как начинали, с чего?