Using Qualifiers
use qualifiers to provide various implementations of a particular bean type
qualifier is an annotation that is applied to a bean
@Target({METHOD, FIELD, PARAMETER, TYPE})
@Retention(RUNTIME)
using a qualifier:
apply annotation to a bean
without a qualifier, @Default is automatically applied
A sample qualifier:
package greetings;
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;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.inject.Qualifier;
@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Informal {}
Qualifier with members
Members further discriminate qualifier.
@Nonbinding member will not discriminate qualifier
Multiple Qualifiers
The the qualifiers will combine