3

私はこの本Pro JPA2: Mastering the Java Persistance APIを読んでいますが、この例のようなクラスレベルのアノテーションの有用性を理解していません:

@EJB(name="cart", beanInterface=ShoppingCart.class)
public class ShoppingCartServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        HttpSession session = request.getSession(true);
        ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
        //......
    }
}

カート変数の値がそこに自動注入されず、変数を初期化する必要がある場合、その @EJB を配置するポイントは何ですか。あなた自身?その注釈がなくても、コードは同じように機能しませんか? 注釈は実際に何をしますか?

メソッドまたは変数に配置すると、自動注入されるなど、他のタイプの注釈の有用性が得られます。ここだけ、クラスレベルでは、役に立たないように見えます。

4

2 に答える 2

4

クラスレベルの @EJB (または @Resource) は、ShoppingCartServlet が何らかの EJB (この場合は「カート」) に依存することを定義します。POJO などの非管理コンテキストから EJB にアクセスする場合は、これが必要です。この場合、ejb-ref (ejb-local-ref) 記述子またはクラス レベルの @EJB アノテーションで定義できる EJB への参照を取得するために、JNDI ルックアップを作成する必要があります。

于 2012-10-02T13:35:20.083 に答える
-1

これはメソッド レベルではなくクラス レベルのアノテーションのように見えます。サーブレットに EJB としてアノテーションを付ける理由がわかりませんが、@EJB アノテーションを適切に使用すると、トランザクションなどのさまざまなものをそのクラスに無料で提供できます。等...

于 2012-10-02T13:22:54.460 に答える