Я пишу приложение на основе JavaEE, и я не совсем уверен, когда происходит внедрение зависимостей. Допустим, у меня есть два класса:
@Stateless
class RepoBean {
@Resource
private SomeResource someResource;
public List<SomeObject> search(String someQuery) {// implementation}
}
а также
@Stateless
class ServiceBean {
@EJB
private RepoBean repoBean;
public void search(List<String> someQueries {
for (String someQuery : someQueries) {
List<SomeObject> someObjects = this.repoBean.search(someQuery)
for (SomeObject someObject : someObjects) {
// handle someObject)
}
}
}
Мои вопросы:
- Когда создается экземпляр компонента репо? При создании экземпляра службы или при использовании?
- Если этот цикл N объектов «длинный», будет ли в итерации использоваться только один экземпляр repoBean или каждый раз, когда пул будет запрашиваться для экземпляра RepoBean, и у меня нет гарантии, что репо будет таким же?
- Есть ли способ убедиться, что все запросы выполняются в одном и том же экземпляре RepoBean, кроме изменения метода поиска репо на
Map<String, List<SomeObject>> search(List<String> searchQueries)