これまでのところ、私はほとんどいつもインターフェイスのないEJBを使って作業していましたが、@Localアノテーションの必要性について少しは理解しています。この例を考えてみましょう:EJB 3.1。 @Local注釈は必要ですか?
public interface MyBeanIntf { void doStuff(); }
@Stateless
public class MyBean implements MyBeanIntf { public void doStuff(){ } }
MyBeanIntf
は@Local
としてマークされるべきか?私は@Local
としてそれに注釈を付けていない場合でも、私はまだきちんとUIコントローラにそれを注入するDIを使用することができますので、私は、それから任意の利益が表示されない:
@Named
@SessionScoped
public class TestController implements Serializable {
// injection works perfectly, even when MyBeanIntf is not marked as @Local
@Inject
private MyBeanIntf myBean;
// or even like this:
// @EJB
// private MyBeanIntf myBean;
}
はのは、それがより複雑にしてみましょう:
public interface MyBeanIntf { void doStuff(); }
public class MySuperBean implements MyBeanIntf { public void doStuff() { } }
@Stateless
public class MyBean extends MySuperBean { }
はMyBean
、有効なLocal EJB
豆と考えていますか?私は間接的にインターフェイスを実装するので、いくつかの疑問があります。
お返事ありがとうございます。仕様へのリンクに関しては、私はまだいくつかの疑問を持っています。セッションBean自体であるスーパークラスについては、明示的に説明します。しかし、 '@ Stateless'や' @ Stateful'アノテーションのない抽象クラスであればどうでしょうか? – jFrenetic
確かに、私は100%でそれについては分かりませんが、編集されたポストを見てみてください。多分役立つかもしれません。 –
おかげさまで、ありがとうございます。私はその部分を自分で読んだが、何とかそれを逃した。 – jFrenetic