我可以对 EJB 使用 CDI 构造函数注入吗?
我想做这样的事情:
@Stateless
public class GreeterEjb {
private final Greeter greeter;
@Inject
public GreeterEjb(Greeter greeter) {
this.greeter = greeter;
}
public String greet() {
return greeter.greet();
}
}
我尝试了Glassfish 3.1.1和JBoss 7.0.2,结果好坏参半。在某些情况下,它有效,在其他情况下则不起作用。如果您对详细信息感兴趣,请在Glassfisch论坛中查看此帖子。
EJB 3.1 规范,第 4.9.2 节 Bean 类说:
该类必须具有不带任何参数的公共构造函数。
这听起来像是 EJB 不允许构造函数注入。
但是CDI规范在第3节的开头说,CDI支持会话Bean。然后,第 3.2 节详细讨论了 CDI 和 EJB,但从未提及构造函数注入不起作用的任何内容。这让我认为应该允许这样做。
那么,规范是否允许为 EJB 注入 CDI 构造函数?