code

javax.inject.Named 주석은 무엇을 위해 사용됩니까?

codestyles 2020. 8. 15. 09:17
반응형

javax.inject.Named 주석은 무엇을 위해 사용됩니까?


javax.inject패키지 를 이해하려고하는데 javax.inject.Named주석이 무엇에 사용되어야 하는지 명확하지 않습니다 . Javadoc은 그 뒤에 숨은 아이디어를 설명하지 않습니다.

Javadoc은 http://download.oracle.com/javaee/6/api/javax/inject/Named.html에 있습니다.

나는 Spring 3.0사용하여 샘플 프로그램을 작성하고 있는데 @Named, bean 을 넣어서 bean factory에 추가하는 것처럼 보이지만 Javadoc 설명이 너무 가벼워 표준 동작인지 Spring 특정 동작인지 알 수 없습니다.

내 질문은 다음과 같습니다.

  1. @Named의 차이점은 무엇입니까@Qualifier
  2. 런타임 시스템에 클래스가 다른 클래스에 주입 가능해야한다는 것을 어떻게 알려 주어야합니까? @ComponentSpring 과 동등 합니까?

1 업데이트 가의 훌륭한 설명이 @Named@Qualifier에 대한 좋은 기사에서 @Named@Qualifier http://java.dzone.com/articles/java-ee6-cdi-named-components을 감사 주석 아래에에 연결을위한 @xmedeko.


@Named를 사용하여 동일한 범위에 바인딩 된 동일한 유형의 다른 개체를 구분합니다.

@Named("maxWaitTime")
public long maxWaitTimeMs;

@Named("minWaitTime")
public long minWaitTimeMs;

@Named 한정자가 없으면 인젝터는 어느 길이를 어떤 변수에 바인딩할지 알 수 없습니다.

@Named처럼 작동하는 주석을 만들려면 만들 때 @Qualifier 주석을 사용하십시오. @Named를 보면 자체적으로 @Qualifier로 주석 처리됩니다.


@InjectSpring 대신 @Autowiredbean을 주입합니다.
@NamedSpring 대신 @Componentbean을 선언합니다.

이러한 JSR-330 표준 주석은 Spring 주석과 동일한 방식으로 스캔되고 검색됩니다 (다음 jar이 클래스 경로에있는 한).


# 2와 관련하여 JSR-330 사양에 따르면 :

이 패키지는 이식 가능한 클래스를 활성화하는 종속성 주입 주석을 제공하지만 외부 종속성 구성은 인젝터 구현까지 남겨 둡니다.

따라서 주입에 사용할 수있는 개체를 결정하는 것은 공급자에게 달려 있습니다. Spring의 경우 모든 Spring Bean입니다. AnnotationConfigApplicationContext를 사용할 때 JSR-330 주석으로 주석이 달린 모든 클래스는 자동으로 Spring Bean으로 추가됩니다.


@Named 어노테이션의 주요 역할은 일반적으로 JSF EL 해석기를 통해 애플리케이션 내에서 EL 문을 해석 할 목적으로 빈을 정의하는 것입니다. 주입은 이름을 사용하여 수행 할 수 있지만 CDI에서 주입 지점과 주입 할 빈을 훨씬 더 풍부한 방법으로 표현할 수 있기 때문에 CDI에서 주입이 작동하는 방식은 아닙니다.

참고 URL : https://stackoverflow.com/questions/5415261/what-is-javax-inject-named-annotation-supposed-to-be-used-for

반응형