CDI(Contexts and Dependency Injection) 1.0 구현에서는
javax.enterprise.inject.spi.InjectionPoint 인터페이스를 구현하는 클래스의 getAnnotated 메소드가 javax.enterprise.inject.spi.Annotated의 인스턴스를 리턴할 수 있습니다. CDI 1.2 구현에서는 인젝션 위치가 삽입된 필드이거나 생성자 또는 메소드에서 매개변수인지 여부에 따라서 getAnnotated 메소드는 AnnotatedField 또는
AnnotatedParameter의 인스턴스를 리턴해야 합니다.
이 규칙은 javax.enterprise.inject.spi.InjectionPoint 인터페이스를 구현하는 클래스에서 getAnnotated 메소드 내의 Annotated 생성자에 대한 호출을 플래그 지정합니다. 예를 들면, new Annotated()에 대한 다음 호출이 플래그 지정됩니다.
< code> public class MyInjectionPoint는 InjectionPoint {를 구현합니다.
public 어노테이션이 있는 getAnnotated() {
새 Annotated () 리턴 {
public Set < Annotation> getAnnotations() {
return null;
}
...
아자리빈;
}
...
} < /코드>
2진 애플리케이션 스캐너는 javax.enterprise.inject.spi.InjectionPoint 인터페이스를 구현하는 클래스의 모든 getAnnotated 메소드에 플래그를
지정합니다. 플래그 지정된 getAnnotated 메소드에서 AnnotatedParameter 또는 AnnotatedField의 인스턴스를 리턴하는 경우, 이 규칙은 무시할 수 있습니다. getAnnotated 메소드에서 Annotated의 인스턴스를 리턴하는 경우에는 코드를 변경해야 합니다.
CDI 1.2 구현에서는 클래스 MyInjectionPoint가 포함된 애플리케이션이 시작되지 않고 다음과 같은 예외를 처리합니다.
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: InjectionPoint.getAnnotated() must return either AnnotatedParameter or AnnotatedField
이 문제를 해결하려면 인젝션 위치가 삽입된 필드이거나 생성자 또는 메소드에서 매개변수인지 여부에 따라서 new AnnotatedField() 또는
new AnnotatedParameter()가 있는 new Annotated()에 대한 호출을 대체하십시오.
Java EE 7 CDI 1.2 구현에 대한 자세한 정보는 Contexts and Dependency Injection 1.2 동작 변경사항을 참조하십시오.