
Spring Frameworkで理解するDI(1)
DI:依存性の注入とは何か?
クロノス山本大
2005/4/29
| 本記事は2005年に執筆されたものです。Spring、DI、AOP全般の最新情報は@IT Java Solutuionのカテゴリ「DI×AOP(Spring/Seasarなど)」をご参照ください。 |
Javaのエンジニアであれば最近、「Dependency Injection」や「DIコンテナ」「Spring」、または「Seaser2」といった名前を目にしたことがあるのではないでしょうか。これらは次世代のEJB(EJB 3.0)に取り込まれる動きがあるなど、最近非常に注目されているキーワードであり、今後のJava開発を語るうえで避けては通れない概念の1つになるとされています。
この連載は、「Spring」というフレームワークを利用して、J2EE開発における「Dependency Injection(DI)」というデザインパターンから得られるメリットを紹介し、J2EEの今後の方向性を理解する助けとしていただくことを目的としています。
|
|
Dependency Injection:依存性の注入とは |
「Dependency Injection(DI)」を直訳すると「依存性の注入」となります。まずは「DIとは何か」というところから理解するために、この言葉を詳しく説明していきます。
DIという言葉のうち「Dependency(依存性)」という単語は、「オブジェクトが成立するために必要な要件」という意味を持っています。この要件とは、オブジェクトの持つ属性や関連するオブジェクトなどです。例えば以下のパソコンを例に挙げたクラス図では「モニター」クラスや「OS」フィールドが「パソコン」クラスの「依存性」となります。
![]() |
次の単語である「注入(Injection)」とは「外部からの設定(Configuration)」を意味しています。 設定ファイルやWebアプリケーションのデプロイメントディスクリプタ(web.xmlなど)での設定を「注入」と呼んでいるのです。
![]() |
これらのことから「DI」という言葉を言い表すと「オブジェクトの成立要件に必要な情報を外部設定すること」となります。情報を外部に切り出すことで、たとえオブジェクトを利用する状況が変わったとしても、設定を変更するだけでそのオブジェクトを利用することができるようになります。つまり再利用性の高い「部品」としてオブジェクトを実装しやすくなるのです。このような再利用性の高いソフトウェア部品のことを「コンポーネント」と呼びます。
DIでは、「設定を利用から分離する(the principle of separating configuration from use)」という考え方をコンポーネント設計のための1つの原則としています。コンポーネントの集合としてプログラムを設計することは「再利用」というメリットだけではなくソフトウェア開発に対してさまざまな恩恵を与えます。
しかし、いまは細かい説明を後回しにしてSpring Frameworkを使った「設定と利用の分離」を実現する簡単なサンプルを作ってみましょう。
| 「ポイント」 DIとは、オブジェクトが成立するための情報を外部設定に分離することで、 コンポーネントの集合としてアプリケーションを組み立てるデザインパターンである。 |
| 1/3 |
|
INDEX |
||
| 第1回 Spring Frameworkで理解するDI | ||
| Page1 Dependency Injection:依存性の注入とは |
||
| Page2 Spring Frameworkを使ったサンプル |
||
| Page3 コンポーネント指向プログラミングの促進 |
||
Spring Frameworkで理解するDI バックナンバー
- 第1回 DI:依存性の注入とは何か?
- 第2回 Springフレームワークの設計思想とAOP
- 第3回 Spring AOPサンプルアプリで理解するAOP
- 最終回 なぜDIコンテナを使うのか
| Java Solution全記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


