Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

なぜCDIの@ApplicationScopedにはeager属性がないのだろう…

JSFに関して拠り所としてる書籍は金魚本と以下の本です。

この本はCDIについても記述があって、各項目レベルで「JSF」「CDI」とか書いてあるので便利です。英語ですが(^^;

で、今日はApplicationScopedに関してです。

View寄りの情報でアプリケーション起動時に取得してキャッシュしておきたいデータが出たため、初めてApplicationScopedを使ってみました。が…JSFの管理対象Bean(@ManagedBean)にはeager属性が存在していて、それをtrueにすることで実現できるのですが、なぜかCDIの管理対象Bean(@Named)にはeager属性がなく、同じことができませんでした。

この辺りの違いに少しとまどいます。
同じようなことを考える人はいるようで、StackOverflowで以下のようなQ&Aをみつけました。
http://stackoverflow.com/questions/7828987/jsf-named-bean-eager-application-scoped-aka-managedbeaneager-true

回答をみるとCDIのextensionを使えばできる、ような記述がありますが、今はまだあまりトリッキー(なのかな?)なことをできるほど力がないので、なるべく標準機能で実装したいです。

ということで、今まで基本的にバックBeanはCDIで統一してきたのですが、このケースだけはJSF管理対象を利用することにしました。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村