検索

11.2.4.3. CDI を用いたオブジェクトの Bean へのインジェクト

download PDF
デプロイメントアーカイブに META-INF/beans.xml または WEB-INF/Beans.xml ファイルが含まれている場合、デプロイメント内の各オブジェクトは CDI を使用して注入できます。
この手順では、オブジェクトを他のオブジェクトに注入する主な方法を紹介します。
  1. @Inject アノテーションを使用して、Bean の任意の部分にオブジェクトを注入します。

    クラスのインスタンスを取得するには、bean 内でフィールドに @Inject アノテーションを付けます。

    例11.6 TextTranslator インスタンスを TranslateController に挿入します

    public class TranslateController {
    
       @Inject TextTranslator textTranslator;
       ...
    
  2. 注入されたオブジェクトのメソッドを使用する

    注入されたオブジェクトのメソッドを直接使用できます。TextTranslator にメソッドがあると仮定しますtranslate

    例11.7 注入されたオブジェクトのメソッドを使用する

    // in TranslateController class
    
    public void translate() {
    
       translation = textTranslator.translate(inputText); 
    
    }
    
  3. Bean のコンストラクターでインジェクションを使用します。

    ファクトリーやサービスロケーターを使用して作成する代わりに、Bean のコンストラクターへオブジェクトをインジェクトできます。

    例11.8 Bean のコンストラクターでインジェクションを使用します。

    public class TextTranslator {
    
       private SentenceParser sentenceParser;
    
       private Translator sentenceTranslator;
    
        
    
       @Inject
    
       TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {
    
          this.sentenceParser = sentenceParser;
    
          this.sentenceTranslator = sentenceTranslator;
    
       }
    
       // Methods of the TextTranslator class
       ...
    }
    
  4. Instance(<T>) インターフェースを使用してインスタンスをプログラムにより取得します。

    Bean 型でパラメーター化されると、Instance インターフェースは TextTranslator のインスタンスを返すことができます。

    例11.9 プログラムでインスタンスを取得する

    @Inject Instance<TextTranslator> textTranslatorInstance;
    
    ...
    
    public void translate() {
    
       textTranslatorInstance.get().translate(inputText);
    
    }
    

結果:

オブジェクトを Bean にインジェクトすると、Bean は全オブジェクトのメソッドとプロパティーを使用できるようになります。Bean のコンストラクターにインジェクトするときに、インジェクションがすでに存在するインスタンスを参照する場合以外は、Bean のコンストラクターが呼び出されるとインジェクトされたオブジェクトのインスタンスが作成されます。たとえば、セッションの存続期間内にセッションスコープの Bean をインジェクトしても、新しいインスタンスは作成されません。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.