Programmatic CDI

このエントリはJavaEE Advent Calendar 2012 第16日目のエントリです。
昨日は @kokuzawa さんの「Point-to-Point on JMS」でした。
明日は @yumix_h さんの「JAX-RSでファイルアップロード!」です。

今日のテーマはCDI 1.0 (JSR 299: Contexts and Dependency Injection for the Java EE platform)です。特にAPIからCDIを使う方法について書き留めたいと思います。なお、動作検証はMac OS X 10.8.2 + JDK 1.7.0_05 + GlassFish 3.1.2 で行っています。

CDIの基本

まずはCDIの基本的な使い方について、簡単にまとめておきましょう。キーになるのはスコープとインジェクションポイントです。

スコープ

スコープとは、インスタンスの生存期間のことです。それぞれのアノテーションでクラス、あるいはプロデューサフィールド/メソッドをマークすることによって表します。

// Userクラスをセッションスコープとしてマーク
@SessionScoped
public class User implements Serializable {

}

予め用意されているスコープは

  • @ApplicationScoped
  • @SessionScoped
  • @ConversationScoped (with JSF)
  • @RequestScoped

の4種類です。意味は名前からだいたい想像がつくと思いますが、ConversationScopeは少し特殊かもしれませんね。これはJSFと共に使用するもので、ブラウザタブ毎に複数リクエストに渡って維持することのできるスコープです。 続きを読む Programmatic CDI

Java, Up to Date

JavaOne東京2012から2ヶ月が経ちました。そこで聞いてきた話を基に漸く社内勉強会を行いましたので、その資料を公開します。

今回と次回は2回シリーズで「Javaの現在と未来」をテーマにお届けする予定です。

まず1回目の今回は「Javaの現在」です。以下のスライドと、スライド中で示している主なコードは別にPDFも用意しました。PDFの方はSlideShareから直接ダウンロードして頂いた方が見やすいと思います。

続きを読む Java, Up to Date