2013-03-20 33 views
8

私はちょっと混乱しています。CDI beanを@injectアノテーションを使って注入するBeanや、それらの中の@injectを使用するBeanと呼んでいます。CDI Beanとは何ですか?

+0

あなたはいくつかのマニュアル/ faqを読んでいましたか? どのような文脈で使用していますか? http://docs.oracle.com/javaee/6/tutorial/doc/giwhl.htmlを読んだことがありますか? 私はそれがタグ付けされたので、これがjava-eeであることに気付いていますか? – cIph3r

+0

私はJboss Weldについて話しています – Yashar

答えて

2

CDI Beanは、CDIコンテナ(Weldなど)によって管理されるBeanです。ですから、もしそれが@injectedならば、それはbeanです。もし何かを注入していれば、それもbeanです。

4

CDIでは、独自のコンポーネントモデル「 」を持つ「CDI Bean」と呼ばれる新しいBeanタイプを導入していません。 CDIは、既存のコンポーネントモデルで定義されているマネージドBeanおよびEJBによって消費される一連のサービスを提供します。 したがって、CDIは、「コンテキスト」および他の古い機能「DI」の有効範囲を持つCDIライフサイクルを処理するBean(EJBまたはManaged Bean)に過ぎません。

2

CDIはJava EE 6で導入され、以前はEJBで使用可能だった機能の一部をコンテナで管理されているすべてのコンポーネントに提供しています。 CDI豆、豆、管理対象Bean、EJB豆、コンテナ管理Beanなど:だからCDI Beanがサーブレット、SOAP Webサービス、RESTfulなWebサービス、実体、EJBのなどので

あなたがinterchageblyすべてのこれらの用語を使用することができますをカバー

1

CDI豆はCDIは、インスタンス管理、および他のオブジェクトの依存関係を満たすように自動的 を注入することができるクラスです。ほぼすべての Javaクラスは、CDIによって管理および注入できます。

たとえば、PrintServletはMessageインスタンスに依存し、CDIランタイムによって自動的に注入されます。

PrintServlet.java

@WebServlet("/printservlet") 
public class PrintServlet extends HttpServlet { 
    @Inject private Message message; 

    @Override 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 
     response.getWriter().print(message.get()); 
    } 
} 

Message.java(このクラスは、CDIビーンある)

@RequestScoped 
public class Message { 
    @Override 
    public String get() { 
     return "Hello World!"; 
    } 
} 

乾杯!

関連する問題