@Component 대신에 @javax.inject.Named나 javax.annotation.ManagedBean을 사용할 수 있다. 다음 예시를 보자.
import javax.inject.Inject;
import javax.inject.Named;
@Named("movieListener") // @ManagedBean("movieListener")도 물론 사용가능하다.
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Inject
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// ...
}
컴포넌트의 이름을 특정하지 않고 @Component를 사용하는 일은 매우 흔하다. @Named 역시 비슷하다. 다음 예시를 보자.
import javax.inject.Inject;
import javax.inject.Named;
@Named
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Inject
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// ...
}
@Named나 @ManagedBean을 사용할 때는, 스프링 어노테이션을 사용할 때와 정확히 같은 방법으로 컴포넌트 스캐닝을 사용할 수 있다.
@Configuration
@ComponentScan(basePackages = "org.example")
public class AppConfig {
// ...
}
※ @Component와 대조적으로, JSR-330의 @Named와 JSR-250의 ManagedBean 어노테이션은 구성이 불가능하다. 커스텀한 컴포넌트 어노테이션들을 만들고 싶다면 스프링의 stereotype 모델을 사용해야만 한다.
'SpringFramework Core - I. IoC 컨테이너 > 11. JSR 330의 표준 어노테이션들 사용하기' 카테고리의 다른 글
11.3. JSR-330 표준 어노테이션들의 한계 (0) | 2020.04.24 |
---|---|
11.1. @Inject와 @Named로 의존성 주입하기 (0) | 2020.04.24 |
11. JSR 330 표준 어노테이션 사용하기 (0) | 2020.04.22 |