Java EE 6 @Inject ленивый?

Я занимаюсь рефакторингом и проверкой приложения, которое мы сейчас разрабатываем. При этом я обнаружил, что вводится больше bean-компонентов, и я думаю, что ленивая загрузка будет лучше подходить для этой цели. Я использую Java EE 6 и чаще использую CDI, чем внедрение EJB.

Итак, вопрос в том, можно ли лениво вводить бины, и если да, то как это сделать?


person Olimpiu POP    schedule 10.04.2013    source источник
comment
да, это в значительной степени отвечает на мой вопрос - это невозможно. Благодарю вас!   -  person Olimpiu POP    schedule 10.04.2013


Ответы (1)


Как насчет использования

@Inject
private Instance<?> lazyProvider;

?

Это позволяет получить экземпляр "?" когда это действительно необходимо через

lazyProvider.get();
person Jan Galinski    schedule 11.04.2013
comment
Надо попробовать, звучит многообещающе. И как мне сказать, какой тип я хочу получить? - person Olimpiu POP; 12.04.2013
comment
Экземпляр является универсальным типом. Таким образом, когда вы внедряете Instance‹Foo›, get() вернет Foo. - person Jan Galinski; 12.04.2013
comment
Хорошо, как мне ввести Foo, например? Где я решаю, что вводить? - person Olimpiu POP; 17.04.2013
comment
Точно так же, как вы сделали бы с самим Foo. По умолчанию вы получите новый экземпляр с зависимой областью действия. Но вы также можете (используя производителя или аннотируя Foo.class) определить пользовательскую область действия и поведение внедрения. - person Jan Galinski; 17.04.2013