→Java関連
→Spring Framework関連
→詳細設計
- DIはinterfaceの変数に対してその実装を用途に応じて挿げ替えるような動作を指すことが多いようだ。(ただし例えばJBoss Seamのバイジェクションなどはクラスに対しても行えるので、interfaceに限る話ではない)
- Javaの@EJBアノテーションもDIの一種です→EJB関連
- DIとAOPがサーバ・コンポーネント技術を変える
- なぜCGIやサーブレットだけでは不十分で、DIコンテナやEJBコンテナが必要な局面があるのでしょうか。その理由としては、主に以下の点が挙げられます。
- リソース・プーリング
- データベース・アクセス
- トランザクション管理
- セキュリティ管理
- Dependency Injectionでは、コンテナ(フレームワーク)が提供するさまざまなサービスを利用する際に、「コンテナのサービスをコンポーネントから呼び出す」のではなく、「コンポーネントに対しコンテナがサービスを注入する」という方法を用いる。これにより、コンポーネントがさまざまなサービスやAPI、またはほかのコンポーネントに依存してしまうことを防ぐ技法だ。
JavaEEのCDI†
Seaser†
- Seasarでスタンドアロンアプリを作るとき
- 初期化で
SingletonS2ContainerFactory.init();
- DIしたいときは
hoge = (Hoge) SingletonS2Container.getComponent(Hoge.class);
- 終了で
SingletonS2ContainerFactory.destroy();
- もちろんHogeはdiconに設定書く。
- @ResourceはSeasarでインジェクション先となる変数であることを示すアノテーション。ただしSeasarではメンバをpublicにすれば@Resourceををつけなくてもインジェクションされる模様
その他†
Last-modified: 2024-03-17 (日) 16:03:00