【发布时间】:2018-01-11 12:16:22
【问题描述】:
我正在编写基于 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)
}
}
}
我的问题是:
- repo bean 何时实例化?在服务实例化或使用中?
- 如果此循环是 N 个“长”对象,迭代中是否只会使用一个 repoBean 实例,或者每次池都会被要求提供 RepoBean 实例,我无法保证 repo 会相同?
- 除了将 repo 的搜索方法修改为
Map<String, List<SomeObject>> search(List<String> searchQueries)之外,有什么方法可以确保所有查询都在同一个 RepoBean 实例上运行
【问题讨论】: