我想要做這樣的事情:我可以爲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