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