A Contexts and Dependency Injection (CDI) 1.0 megvalósításban a
getAnnotated módszer, amely egy
javax.enterprise.inject.spi.InjectionPoint felületet
megvalósító osztályhoz van megadva, a
javax.enterprise.inject.spi.Annotated egy példányát adja
vissza.
A CDI 1.2 megvalósításban a getAnnotated módszernek
az AnnotatedField vagy az AnnotatedParameter egy
példányát kell visszaadnia, attól függően, hogy a beszúrási pont egy
beszúrt mező, vagy egy konstruktor vagy módszer egy paramétere.
Ez a szabály megjelöli az Annotated
konstruktor meghívását egy getAnnotated módszeren belül
egy olyan osztályhoz, amely megvalósítja a
javax.enterprise.inject.spi.InjectionPoint
felületet. Például a new Annotated() meghívása meg
van jelölve:
< code> nyilvános osztály MyInjectionPoint megvalósítja a InjectionPoint {t
Nyilvános Annotated getAnnotated() {
Visszaküldött új annotációval () {
Public Set < Annotation> getAnnotations() {
return null;
}
...
};
}
...
} /code>
A bináris alkalmazáselemző megjelöli a getAnnotated
módszer összes meghívását a
javax.enterprise.inject.spi.InjectionPoint felületet
megvalósító osztályokon. Ha a megjelölt getAnnotated
módszer az AnnotatedParameter vagy az
AnnotatedField egy példányát adja vissza, akkor ez a szabály
figyelmen kívül hagyható. Ha a getAnnotated módszer az
Annotated egy példányát adja vissza, akkor a kódot módosítani
kell.
A CDI 1.2 megvalósításban a MyInjectionPoint osztályt
tartalmazó alkalmazás nem indul el, és a következő kivételt dobja:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521:
Az InjectionPoint.getAnnotated() módszernek egy AnnotatedParameter
vagy AnnotatedField példányt kell visszaadnia
A probléma megoldása érdekében cserélje le a new
Annotated() hívást egy new AnnotatedField() vagy
new AnnotatedParameter() hívásra, attól függően, hogy a
beszúrási pont egy beszúrt mező, vagy egy konstruktor vagy módszer
paramétere.
A Java EE 7 CDI 1.2 megvalósítással kapcsolatos további információk: Contexts and Dependency Injection 1.2 viselkedésváltozásai.