理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

DI と AOP 1

  • 依存オブジェクトを DI によって外部から注入する際は、(Setter に)型情報まで含めることができるため、型検証が可能
    • 無駄なコードが排除される
    • 可読性が向上
  • DI コンテナを利用しない (JNDI など)の場合、型検証は利用者側で行う必要がある
  • Java の進化は、処理を"コードの記述"から"宣言"へと移行する方向に進んでいる

コンストラクタインジェクション

  • 長所:
    • Immutable なオブジェクトの生成が可能
    • 不正なオブジェクトが構築されることを防げる
  • 短所:
    • 一度設定したオブジェクトは(基本的には)変更できない
    • コンストラクタのパラメータリストが長くなる(傾向がある)
    • 循環参照するオブジェクトを構築できない
  • コンストラクタインジェクションコンテナを実装する際は、パラメータとして依存オブジェクトを受け取るコンストラクタに注意が必要
    • 依存オブジェクトが未構築である場合がある