→[[Java関連]]

→[[S2AOP]]

#contents

*概要 [#c04ce02c]
-昨今のDIはinterfaceの変数に対してその実装を用途に応じて挿げ替えるような動作を指すことが多いようだ。(ただし例えばJBoss Seamのバイジェクションなどはクラスに対しても行えるので、interfaceに限る話ではない)

-@EJBアノテーションもDIの一種です→[[EJB関連]]
-Javaの@EJBアノテーションもDIの一種です→[[EJB関連]]

-[[DIとAOPがサーバ・コンポーネント技術を変える>http://www.atmarkit.co.jp/fjava/kaisetsu/j2eewatch07/j2eewatch07_1.html]]
--なぜCGIやサーブレットだけでは不十分で、DIコンテナやEJBコンテナが必要な局面があるのでしょうか。その理由としては、主に以下の点が挙げられます。
---リソース・プーリング
---データベース・アクセス
---トランザクション管理
---セキュリティ管理
--Dependency Injectionでは、コンテナ(フレームワーク)が提供するさまざまなサービスを利用する際に、「コンテナのサービスをコンポーネントから呼び出す」のではなく、「コンポーネントに対しコンテナがサービスを注入する」という方法を用いる。これにより、コンポーネントがさまざまなサービスやAPI、またはほかのコンポーネントに依存してしまうことを防ぐ技法だ。

-[[Dependency Injection for Loose Coupling:http://www.codeproject.com/useritems/DependencyInjection.asp]] 2006.4.19
--Loose Coupling =疎結合性のことか?

-[[Dependency Injectionの解説(Java):http://codezine.jp/a/article.aspx?aid=60]]



*Seaser [#g5db6df1]
-SAStrutsについては→Struts関連
-S2JDBCについては→O/Rマッピング
-S2AOPについては→[[S2AOP]]

-Seasarでスタンドアロンアプリを作るとき
--初期化で
 SingletonS2ContainerFactory.init();
--DIしたいときは
 hoge = (Hoge) SingletonS2Container.getComponent(Hoge.class);
--終了で
 SingletonS2ContainerFactory.destroy();
--もちろんHogeはdiconに設定書く。

-@ResourceはSeasarでインジェクション先となる変数であることを示すアノテーション。ただしSeasarではメンバをpublicにすれば@Resourceををつけなくてもインジェクションされる模様

-[[Seasar Sample Project>http://www.wikiroom.com/oreju/?%A5%B7%A1%BC%A5%B5%A1%BC%A5%B5%A5%F3%A5%D7%A5%EB%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8]]

-[[The Seasar Project>http://www.seasar.org/index.html]]
--DI (Dependency Injection) とAOP (Aspect Oriented Programming) をサポートした軽量コンテナ
--[[機能リファレンス>http://s2container.seasar.org/2.4/ja/DIContainer.html]]

-[[Seasar DI container with AOP>http://cvs.sourceforge.jp/view/seasar/s2-dao/doc/DIContainer.html?revision=1.1]]

-[[DI+AOPを実現するSeasarV2>http://www.atmarkit.co.jp/fjava/rensai3/seasar2_02/seasar2_02_2.html]]


*Spring [#d1ca8eb1]
-[[Spring Frameworkで理解するDI 依存性の注入とは何か?>http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html]]
--DIという言葉のうち「Dependency(依存性)」という単語は、「オブジェクトが成立するために必要な要件」という意味を持っています。この要件とは、オブジェクトの持つ属性や関連するオブジェクトなどです。
--「注入(Injection)」とは「外部からの設定(Configuration)」を意味しています。 設定ファイルやWebアプリケーションのデプロイメントディスクリプタ(web.xmlなど)での設定を「注入」と呼んでいる
--これらのことから「DI」という言葉を言い表すと「オブジェクトの成立要件に必要な情報を外部設定すること」となります。情報を外部に切り出すことで、たとえオブジェクトを利用する状況が変わったとしても、設定を変更するだけでそのオブジェクトを利用することができるようになります。つまり再利用性の高い「部品」としてオブジェクトを実装しやすくなるのです。このような再利用性の高いソフトウェア部品のことを「コンポーネント」と呼びます。


*その他 [#t288a8d9]
-[[.NETのDIコンテナの簡単なまとめ>http://spring-net.jp/modules/newbb/viewtopic.php?post_id=50&topic_id=20&forum=8]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS