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 {
}

results matching ""

    No results matching ""