如何注入两个相同类型的 EJB?
How can I inject two EJBs of same type?
我正在尝试注入两个具有不同注释的相同类型的 EJB。
但是注入的实例是相同的。
@Path("/some")
public class SomeResource {
@Inject
@SomePostConstructionAnnotationForSomeService("this")
private SomeService s1;
@Inject
@SomePostConstructionAnnotationForSomeService("that")
private SomeService s2;
}
SomeService class 看起来像这样。
public SomeService {
@PostConstruct
private void constructed() {
// find the annotation and do something else.
}
@Inject
private InjectionPoint injectionPoint;
}
问题是只调用了 s1
而 s2
等于 s1
.
如果 SomeService
是 CDI
bean 并且它的范围是 @Dependent
或没有范围(这也意味着 @Dependent
注入另一个 bean 时),这将起作用。它有什么范围?如果 SomeService
是 EJB
bean 而不是 CDI
这将不起作用。
更新:
您可以将 SomeService 移动到基础 class 并通过扩展此 class 并注入这些 EJB 来创建两个不同的 EJB bean。
我正在尝试注入两个具有不同注释的相同类型的 EJB。 但是注入的实例是相同的。
@Path("/some")
public class SomeResource {
@Inject
@SomePostConstructionAnnotationForSomeService("this")
private SomeService s1;
@Inject
@SomePostConstructionAnnotationForSomeService("that")
private SomeService s2;
}
SomeService class 看起来像这样。
public SomeService {
@PostConstruct
private void constructed() {
// find the annotation and do something else.
}
@Inject
private InjectionPoint injectionPoint;
}
问题是只调用了 s1
而 s2
等于 s1
.
如果 SomeService
是 CDI
bean 并且它的范围是 @Dependent
或没有范围(这也意味着 @Dependent
注入另一个 bean 时),这将起作用。它有什么范围?如果 SomeService
是 EJB
bean 而不是 CDI
这将不起作用。
更新: 您可以将 SomeService 移动到基础 class 并通过扩展此 class 并注入这些 EJB 来创建两个不同的 EJB bean。