我想要做这样的事情:我可以为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混合结果试了一下。在某些情况下它有效,但在其他情况下则不会。 如果您对细节感兴趣,请参阅this thread in the Glassfisch forum。
的EJB 3.1 spec,部分4.9.2 bean类说:
类必须有一个公共的构造函数没有参数。
听起来像EJB的构造函数注入是不允许的。
但CDI spec在第3节的开头说Session Bean是CDI支持的。然后第3.2节详细讨论了关于CDI和EJB的问题,但从来没有提到任何有关构造器注入的问题。这让我觉得应该允许。
那么,规范是否允许CDI构造函数注入EJB或不?
乳清你想这样做吗?为什么不正常注射? – Santosh 2012-02-07 09:48:28
您是否尝试过添加无参数构造函数 – Kris 2012-02-07 09:49:44
@Kris是的。使用额外的无参数构造函数可以工作。我觉得很奇怪。 – 2012-02-07 09:52:47