Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Использование квалификаторов

Вы можете использовать квалификаторы для предоставления различных реализаций определённого типа бина. Квалификатор — это аннотация, которую вы применяете к бину. Тип квалификатора — это аннотация Java, определённая как @Target({METHOD, FIELD, PARAMETER, TYPE}) и @Retention(RUNTIME).

Например, вы можете объявить тип квалификатора @Informal и применить его к другому классу, который расширяет класс Greeting. Чтобы объявить этот тип квалификатора, используйте следующий код:

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 static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

import javax.inject.Qualifier;

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Informal {}

Затем вы можете определить класс компонента, который расширяет класс Greeting и использует этот квалификатор:

package greetings;

@Informal
public class InformalGreeting extends Greeting {
    public String greet(String name) {
        return "Hi, " + name + "!";
    }
}

Обе реализации компонента могут теперь использоваться в приложении.

Если вы определяете бин без квалификатора, то он автоматически получает квалификатор @Default. Неаннотированный класс Greeting может быть объявлен следующим образом:

package greetings;

import javax.enterprise.inject.Default;

@Default
public class Greeting {
    public String greet(String name) {
        return "Hello, " + name + ".";
    }
}

Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)