2015年9月5日土曜日

CDIメモ(自分向け)

完全に自分向けメモ。
ぼやっと本読んでたら何やら理解できて来た気がするので……

内容が正しいかはまったくもって保証しません。

■ CDI(Context and Dependency Injection)


    @Named(value = "injectSample")
    public class InjectSample {
        @Inject InjectedSample injected;
        public void sample() {
            injected.execute();
        }
    }


通常であればinjectedはどこかでインスタンス化する
必要がある(new InjectedSample();)が、CDIを利用することで
これをしなくてよくなる。

これによって、
InjectSampleとInjectedSampleの間の依存関係を疎にすることができる。
(その代わりInjectedSampleは引数を受け付けないコンストラクタによって
インスタンス化される)

■ コンテキスト

上記の内容を理解するにはコンテキスト(Context)にるいて理解する必要がある。

CDIにおけるコンテキストとは
スコープアノテーションによって指定されたオブジェクトの存続設定

■スコープアノテーション

CDIビーンに対して設定されるオブジェクトの存続期間


  • @RequestScoped
  • @SessionScoped
  • @ApplicationScoped
  • @ConversationScoped
  • @Dependent

■CDIビーン

管理ビーンの一種。CDIサービスによって管理される。
管理ビーンはコンテナ内で管理されており、
スコープに応じて適切なオブジェクトが自動で選択され、
変数に代入される。

0 件のコメント:

コメントを投稿