Anotacje w CDI
@Default
- Annotacja służąca do oznaczania domyślnej implementacji interfejsu/typu wstrzykiwanego w przypadku, gdy na classpath znajduje się ich więcej niż jedna
@Qualifier
- Annotacja służąca do oznaczania konkretnej implementacji typu (przy wstrzykiwaniu go annotacją @Inject)
- Wymaga użycia annotacji @Retention oraz @Target
- Domyślnie implementacja nie posiadająca annotacji pochodnej od Qualifier, posiada annotacje @Default
- Jednak dobrą praktyką jej jej używać - pokazujemy jawnie, co jest domyślną implementacją, a co customową
Tworzenie własnej annotacji
import javax.inject.Qualifier;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD, METHOD, PARAMETER, TYPE})
public @interface SomeAnnotation {
}