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

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

Инъецирование объектов с использованием методов-производителей

Методы-производители предоставляют способ инъецирования объектов, не являющихся бинами, объектов, значения которых могут изменяться во время выполнения, и объектов, требующими пользовательской инициализации. Например, если вы хотите инициализировать числовое значение, определённое квалификатором с именем @MaxNumber, то вы можете определить значение в Managed-бине и затем определить метод-производитель getMaxNumber для этого:

private int maxNumber = 100;
...
@Produces @MaxNumber int getMaxNumber() {
    return maxNumber;
}

Когда вы инъецируете объект в другой Managed-бин, контейнер автоматически вызывает метод производителя, инициализируя переменную значением 100:

@Inject @MaxNumber private int maxNumber;

Если значение может меняться во время выполнения, то процесс немного отличается. Например, следующий код определяет метод-производитель, который генерирует случайное число, определённое квалификатором с именем @Random:

private java.util.Random random =
    new java.util.Random( System.currentTimeMillis() );

java.util.Random getRandom() {
        return random;
}

@Produces @Random int next() {
    return getRandom().nextInt(maxNumber);
}

Когда вы инъецируете этот объект в другой Managed-бин, вы тем самым объявляете контекстное инстанцирование объекта:

@Inject @Random Instance<Integer> randomInt;

Затем вы вызываете get-метод для Instance:

this.number = randomInt.get();

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