タグ

2011年4月30日のブックマーク (2件)

  • CDIではフィールドを直接利用してもよい - しんさんの出張所 はてなブログ編

    CDIではフィールドを直接参照してはいけない をみるとタイトルからCDIではまったくpublicフィールド触ってはいけないように感じてしまう。 実際はそんなことはない。 依存スコープのBeanなら直接参照してよい。 依存スコープというのは注入先のスコープに合わせるということ。プロキシ等を通さずインスタンスが生成されてそのまま入る。Springでいうところのプロトタイプということで一番単純なDIともいえる。 そして依存スコープ以外でpublicフィールドを持っているCDI管理下のビーンを作成すると、デプロイ時にはねられる。 つまりあのきしださんの例はパッケージプライベートを利用したときのみチェックにも引っかからず予想しない動きが発生するわけだ。すべてを同一パッケージにおくとは考えにくいこと、publicフィールドだとデプロイすらできないことを考えるとはまるほうが珍しいと考えることができる。

    CDIではフィールドを直接利用してもよい - しんさんの出張所 はてなブログ編
    t_yano
    t_yano 2011/04/30
    フィールドを使ってもいいって話。publicならディプロイではじかれる。パッケージプライベートだと素通りなのはなぜかあとで調べる。
  • CDIではフィールドを直接参照してはいけない - きしだのHatena

    ちょっとハマったので、メモ こんなSessionScopedなクラスを作ります。 import java.io.Serializable; import javax.annotation.PostConstruct; import javax.enterprise.context.SessionScoped; import javax.inject.Named; @Named @SessionScoped public class MySession implements Serializable{ long id; @PostConstruct void init(){ System.out.println("init my session"); } } そんでもって、こんなサーブレットから使ってみます。 @WebServlet(name = "MyServlet", urlPatter

    CDIではフィールドを直接参照してはいけない - きしだのHatena
    t_yano
    t_yano 2011/04/30
    構造が認識できると納得感も上がるね。