5

Java EE CDIを読んでいて、クラスベースのリソースインジェクションがどのように機能するかについて混乱しています。

Java EE 6チュートリアルでは、次の使用例を示しています。

@Resource(name="myMessageQueue",
                type="javax.jms.ConnectionFactory")
public class SomeMessageBean {
...
}

宣言された方法はわかりますが、宣言されたリソースはどのように使用されることになっていSomeMessageBeanClassますか?myMessageQueue注入されるリソースは何ですか?

4

1 に答える 1

5

@ResourceEJB に由来するアノテーションで。

その系統は、畑への注入が可能になる前の時代にまでさかのぼります。当時、「注入」とは、各 EJB Bean に関連付けられた一種のマップに何かを入れることを意味していました。いわゆる ENC (エンタープライズ ネーミング コンテキスト)。

この「マップ」にアクセスするInitialContextには、EJB 内の when から「java:/comp」名前空間を要求するか、EJB コンテキスト (同様に注入する必要があります) から直接アクセスします。

最近では、ENC を使用することはめったにないようです。フィールド注入ははるかに便利です。

于 2012-11-29T20:25:22.660 に答える