我正在尝试注入两个具有不同注释的相同类型的EJB。 但注入的实例是相同的。
@Path("/some")
public class SomeResource {
@Inject
@SomePostConstructionAnnotationForSomeService("this")
private SomeService s1;
@Inject
@SomePostConstructionAnnotationForSomeService("that")
private SomeService s2;
}
SomeService类看起来像这样。
public SomeService {
@PostConstruct
private void constructed() {
// find the annotation and do something else.
}
@Inject
private InjectionPoint injectionPoint;
}
问题是只调用s1
而s2
等于s1
。
答案 0 :(得分:2)
如果SomeService
是CDI
bean并且其范围是@Dependent
或没有范围(在注入另一个bean时也意味着@Dependent
),这将有效。它有什么范围?如果SomeService
为EJB
bean而不是CDI
,那么这项工作就无法完成。
<强>更新强> 您可以将SomeService移动到基类,并通过扩展此类并注入这些EJB来创建两个不同的EJB bean。