第6章 Dependency Injection

-依存性の注入-

目次

6.1. はじめに
6.2. Dependency Injection概要
6.3. Dependency Injectionのタイプ
6.3.1. コンストラクタ・インジェクション
6.3.2. セッター・インジェクション
6.3.3. メソッド・インジェクション
6.3.4. フィールド・インジェクション
6.4. ライフサイクルとDI
6.5. 自動バインディング
6.5.1.
6.5.2. バインディング・タイプ
6.5.3. 依存コンポーネントの解決
6.5.4. 自動バインディング・モード
6.6. 特殊なコンポーネント
6.6.1. S2Container
6.6.2. ComponentDef
6.7. 外部バインディング
6.8. まとめ

6.1. はじめに

本章では,Dependency Injection (依存性の注入,以下DI) の利用方法について説明します.

6.2. Dependency Injection概要

DIとは,コンポーネントが他のコンポーネントに依存している場合に,その依存物 (他のコンポーネント) を外部 (S2コンテナ) から注入することです. DIを利用すると,コンポーネントが他のコンポーネントに直接依存することを避けることができます.

6.3. Dependency Injectionのタイプ

Dependency Injectionは,あるコンポーネントが依存する (必要とする) 他のコンポーネントをコンテナから渡されます. その際の方法として,次のものがあります.

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

  • セッター・メソッド

  • メソッド・インジェクション

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

コンストラクタ・インジェクションでは,コンストラクタを通じて依存するコンポーネントが設定されます.

6.3.2. セッター・インジェクション

セッター・インジェクションでは,プロパティのセッター・メソッドを通じて依存するコンポーネントが設定されます.

6.3.3. メソッド・インジェクション

メソッド・インジェクションでは,任意のメソッドを通じて依存するコンポーネントが設定されます.

メソッド・インジェクション

6.3.4. フィールド・インジェクション

フィールド・インジェクションでは,任意のフィールドに直接コンポーネントが設定されます. フィールド・インジェクションはdiconファイルで指定することはできません. フィールド・インジェクションを使用するにはアノテーションを指定します.

6.4. ライフサイクルとDI

図が欲しい

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

  • セッター・インジェクション/フィールド・インジェクション

  • initメソッド・インジェクション

  • destroyメソッド・インジェクション

6.5. 自動バインディング

6.5.1.

6.5.2. バインディング・タイプ

must

should (デフォルト)

may

none

6.5.3. 依存コンポーネントの解決

  • 名前

6.5.4. 自動バインディング・モード

auto

constructor

property

none

semiauto (Version: 2.4~)

6.6. 特殊なコンポーネント

6.6.1. S2Container

6.6.2. ComponentDef

6.7. 外部バインディング

6.8. まとめ