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 для создания пользовательских аннотаций компонентов.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки