Spring IoC контейнер: сканирование classpath, предоставление метаданных квалификатора с аннотациями
Аннотация @Qualifier обсуждалась в посте "Настройка автопривязки на основе аннотаций с @Qualifier". Примеры в том посте демонстрируют использование аннотации @Qualifier и пользовательских аннотаций квалификатора для обеспечения детального контроля при разрешении кандидатов с автопривязкой. Поскольку те примеры были основаны на определениях bean-компонентов XML, метаданные квалификатора были предоставлены в определениях bean-кандидатов с использованием квалификатора или мета-дочерних элементов элемента bean-компонента в XML. Полагаясь на сканирование пути к классам для автоматического обнаружения компонентов, вы можете предоставить метаданные квалификатора с аннотациями на уровне типа для класса-кандидата. Следующие три примера демонстрируют эту технику:
Java
@Component
@Qualifier("Action")
public class ActionMovieCatalog implements MovieCatalog {
// ...
}
Kotlin
@Component
@Qualifier("Action")
class ActionMovieCatalog : MovieCatalog
Java
@Component
@Genre("Action")
public class ActionMovieCatalog implements MovieCatalog {
// ...
}
Kotlin
@Component
@Genre("Action")
class ActionMovieCatalog : MovieCatalog {
// ...
}
Java
@Component
@Offline
public class CachingMovieCatalog implements MovieCatalog {
// ...
}
Kotlin
@Component
@Offline
class CachingMovieCatalog : MovieCatalog {
// ...
}
Как и в случае большинства альтернатив на основе аннотаций, имейте в виду, что метаданные аннотации привязаны к самому определению класса, в то время как использование XML позволяет нескольким бинам одного типа предоставлять вариации в своих метаданных квалификатора, поскольку эти метаданные предоставляются на экземпляр, а не на класс.
Читайте также:
- Spring IoC контейнер: сканирование classpath, именование автоопределенных компонентов
- Spring IoC контейнер: сканирование classpath, определение метаданных компонента в компонентах
- Spring IoC контейнер: сканирование classpath, предоставление области действия для автоопределенных компонентов
Комментарии
Отправить комментарий