• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

Java技術最前線

「Java SE 6完全攻略」第100回 アノテーションを処理する その7

櫻庭 祐一=横河電機 2009/02/23 ITpro

今週がPluggable Annotation Processing APIの最終回です。最終回ということもあるので,少し役に立ちそうなサンプルを作ってみることにします。今回作成するのは,簡易DIコンテナです。

ここで作成するDIコンテナが“簡易”というのは次の制限があるためです。

  • インタフェースの実装クラスをインタフェース名+Implに決め打ち
  • インタフェースと実装クラスが同じパッケージ
  • インジェクションはコンストラクタインジェクションのみ

その他にもいろいろと制約がありますが,簡易ということでご容赦ください。

この簡易DIコンテナで使用するアノテーションはComponentアノテーションとInjectionアノテーションの2種類です。どちらも要素は取らないマーカーアノテーションです。

まずは,簡易インタフェースの使い方を説明しましょう。クラスAがインタフェースBに依存しているとします。この場合,上記のアノテーションを使用して,次のように記述します。

public interface B {
    public void b();
}
         
@Component
public class A {
    @Injection
    public A(B b) { ... }
 
        ...
}

DIコンテナで扱うクラスはComponentアノテーションでクラスを修飾します。そして,依存関係のあるインタフェースはコンストラクタにInjectionアノテーションを付加します。

このクラスAを使用するクライアントは次のようにします。

    DIContainer container = new DIContainer();
    A a = (A)container.getComponent(A.class);

ちょっと見,Google Guiceのような感じです。とはいうものの,Google Guiceで行うインタフェースと実装クラスのバインドを,実装クラスを決め打ちにすることにより簡略化しています。

ここから先はITpro会員(無料)の登録が必要です。

次ページ 簡易DIコンテナについて
  • 1
  • 2
  • 3
  • 4
  • 5

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る