- 1.1. Spring の概要
- 1.2. DI: Dependency Injection
- 1.3. Dependency Injection のタイプ
- 1.4. Spring のインストール
1.2. DI: Dependency Injection
Dependency Injection (依存性注入) とは、あるクラスが別のクラスをインスタンス変数に持つなどして利用 (依存) している場合に、インスタンス変数の設定 (依存性の解決) をクラス内で行うのではなく、外部から設定 (注入) するという考え方です。Spring の場合は、その外部が Core モジュールである DI コンテナになります。
ある少年とお弁当の関係を考えてみましょう。ここではこの少年がどのようにお弁当を手に入れるのかを考えます。
もっとも単純なケースでは、少年は自分で作ることによりお弁当を手に入れます。
しかし、これだと少年が毎日お弁当を作らないといけないので大変です。そこで少年は誰かにお弁当を作ってもらうことにしました。
少年は自分でお弁当を作らなくて良くなったので確かに便利にはなりましたが、少年がお弁当を作ってくれる人を知っている必要があること、お弁当のレパートリーを増やすことを考えると少々柔軟性に欠けます。では、神様が少年にお弁当を与えてくれるとどうでしょう?
少年はもはやお弁当を頼むこともしなくてよくなり、望んだときにお弁当を手に入れることができます。これが Dependency Injection の考えです。少年はお弁当やお弁当を作ってくれる人に依存することなくお弁当を手に入れられます。時間が来ればお弁当が手元にあるのですから、少年はお弁当を食べさえすればよいのです。
さらに、少年がお昼のお弁当だけでなく朝食や夕食、あるいはおやつが食べたいというなら食べ物をもらう準備をすればよいだけです。
繰り返しになりますが、Dependency Injection とは、各クラスは他のクラスにアクセスして依存性を高めるようなことをせずに、外部の実体からその依存関係を注入するという考え方です。