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();
Назад | Вперёд | Содержание |