Spring IoC контейнер: конфигурация на основе аннотаций, использование дженериков в качестве квалификаторов автопривязки
В дополнение к аннотации @Qualifier вы можете использовать универсальные типы Java (дженерики) в качестве неявной формы квалификации. Например, предположим, что у вас есть следующая конфигурация:
Java
@Configuration
public class MyConfiguration {
@Bean
public StringStore stringStore() {
return new StringStore();
}
@Bean
public IntegerStore integerStore() {
return new IntegerStore();
}
}
Kotlin
@Configuration
class MyConfiguration {
@Bean
fun stringStore() = StringStore()
@Bean
fun integerStore() = IntegerStore()
}
Предполагая, что предыдущие компоненты реализуют универсальный интерфейс (то есть Store<String> и Store<Integer>), вы можете привязать с помощью @Autowire интерфейс Store, и дженерик используется в качестве квалификатора, как показано в следующем примере:
Java
@Autowired
private Store<String> s1;
// <String> qualifier, внедряет stringStore bean
@Autowired
private Store<Integer> s2;
// <Integer> qualifier, внедряет integerStore bean
Kotlin
@Autowired
private lateinit var s1: Store<String>
// <String> qualifier, внедряет stringStore bean
@Autowired
private lateinit var s2: Store<Integer>
// <Integer> qualifier, внедряет integerStore bean
Общие квалификаторы также применяются при автоматическом соединении списков, экземпляров карты и массивов. Следующий пример автоматически связывает общий List:
Java
// Внедрить все bean Store, если они имеют дженерик <Integer>
// Store<String> bean не будет отображаться в этом списке
@Autowired
private List<Store<Integer>> s;
Kotlin
// Внедрить все bean Store, если они имеют дженерик <Integer>
// Store<String> bean не будет отображаться в этом списке
@Autowired
private lateinit var s: List<Store<Integer>>
Читайте также:
- Spring IoC контейнер: конфигурация на основе аннотаций, точная настройка автопривязки на основе аннотаций с @Primary
- Spring IoC контейнер: конфигурация на основе аннотаций, использование @Autowired
- Spring IoC контейнер: конфигурация на основе аннотаций, настройка автопривязки на основе аннотаций с @Qualifier
Комментарии
Отправить комментарий