Spring IoC контейнер: аннотации JSR 330, @Named и @ManagedBean - стандартные эквиваленты аннотации @Component
Вместо @Component вы можете использовать @javax.inject.Named или javax.annotation.ManagedBean, как показано в следующем примере:
Java
import javax.inject.Inject;
import javax.inject.Named;
// @ManagedBean("movieListener") также может быть использован
@Named("movieListener")
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Inject
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// ...
}
Kotlin
import javax.inject.Inject
import javax.inject.Named
// @ManagedBean("movieListener") также может быть использован
@Named("movieListener")
class SimpleMovieLister {
@Inject
lateinit var movieFinder: MovieFinder
// ...
}
Очень часто используется @Component без указания имени для компонента. @Named можно использовать аналогичным образом, как показано в следующем примере:
Java
import javax.inject.Inject;
import javax.inject.Named;
@Named
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Inject
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// ...
}
Kotlin
import javax.inject.Inject
import javax.inject.Named
@Named
class SimpleMovieLister {
@Inject
lateinit var movieFinder: MovieFinder
// ...
}
Когда вы используете @Named или @ManagedBean, вы можете использовать компонентное сканирование точно так же, как и при использовании аннотаций Spring, как показано в следующем примере:
Java
@Configuration
@ComponentScan(basePackages = "org.example")
public class AppConfig {
// ...
}
Kotlin
@Configuration
@ComponentScan(basePackages = ["org.example"])
class AppConfig {
// ...
}
В отличие от @Component, аннотации JSR-330 @Named и JSR-250 ManagedBean не являются компонуемыми. Вы должны использовать модель стереотипа Spring для создания пользовательских аннотаций компонентов.
Читайте также:
- Spring IoC контейнер: использование стандартных аннотаций JSR 330, внедрение зависимостей с @Inject и @Named
- Spring IoC контейнер: сканирование classpath, предоставление метаданных квалификатора с аннотациями
- Spring IoC контейнер: сканирование classpath, определение метаданных компонента в компонентах
Комментарии
Отправить комментарий