private int maxNumber = 100;
...
@Produces @MaxNumber int getMaxNumber() {
    return maxNumber;
}| 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();| Назад | Вперёд | Содержание | 
 Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
	
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)
 			
		Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
	
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)