第5章 MISC

目次

5.1. コンポーネントでS2Containerを使用する
5.2. S2Containerのログ設定
5.2.1. S2Logger
5.3. DBIを用いたデータベースアクセス
5.3.1. DBI::DatabaseHandleのコンポーネント化
5.4. DBIInterceptorを用いたデータベースアクセス
5.4.1. DBIInterceptorの概要
5.4.2. DBIInterceptorをアスペクトする
5.4.3. メソッド引数でバインド値を設定する
5.4.4. メソッドの戻り値でバインド値を設定する
5.4.5. DaoクラスでDBIを直接使用する
5.4.6. Paginateクラスでページング処理
5.5. S2CGI Webフレームワーク
5.5.1. セットアップ
5.5.2. フレームワークの起動
5.5.3. Seasar::CGI::Pageクラス
5.5.4. Class Variables
5.5.5. Instance Variables
5.5.6. get/postメソッド
5.5.7. paramメソッド
5.5.8. renderメソッド
5.5.9. partialメソッド
5.5.10. redirectメソッド
5.5.11. validateメソッド
5.5.12. セッション管理
5.5.13. Dependency Injection
5.5.14. Unit Test
5.5.15. Rack CGI
5.6. RailsでS2Containerを使用する
5.6.1. 動作環境
5.6.2. セットアップ
5.6.3. 概要
5.6.4. Dependency Injection

5.1. コンポーネントでS2Containerを使用する

コンポーネントが自分自身が登録されているS2Containerに依存している場合は、プロパティインジェクションで S2Containerインスタンスを取得することができます。S2Containerのコンポーネント名は「container」です。
例として、次のようなサービスクラスを作成します。自動バインディングによりプロパティインジェクションによってS2ContainerインスタンスがDIされます。

module Example
  class Service
    s2comp
    def initialize
      @container = :container
    end
    attr_reader :container
  end
end

実行スクリプトは次のように作成します。

require 's2container'
require 'example'

service = s2app.get(Example::Service)
p service.container.class.name
[注意]NOTE

このExampleは example/example12 にあります。



© Copyright The Seasar Foundation and the others 2008-2009, all rights reserved.