<html>
<body>
S2コンテナとその構成要素を定義するインターフェースおよび、S2コンテナの振舞いに関連した例外クラスを提供します。
<p>
このパッケージを構成する主な要素は、以下のとおりです。
<dl>
<dt>コンテナ本体(<a href="S2Container.html">S2Container</a>)</dt>
<dd>
S2コンテナ本体は、各コンポーネントの定義情報を保持し、必要に応じてコンポーネントの生成・提供を行います。
S2コンテナは階層構造をもつことができ、diconファイルの<include>要素はS2コンテナの階層構造として内部的には表現されます。
</dd>
<dt>定義情報(~Def)</dt>
<dd>
diconファイルやアノテーションで指定されたコンポーネントの定義情報は、S2コンテナ上では
<a href="ConponentDef.html">ConponentDef</a>、<a href="PropertyDef.html">PropertyDef</a>
などの定義情報として保持されます。
</dd>
<dt>定義情報の取得方法(~DefAware)</dt>
<dd>
diconファイル上で<initMethod>要素の子要素として<arg>要素を書くように、定義情報は親子関係を持ちます。
親要素から子要素の定義情報を取り出す方法は、引数定義やメタ定義のように複数の親をもつものがあるため、
個別にインターフェースとして定義されています。
</dd>
<dt>式(<a href="Expression.html">Expression</a>)</dt>
<dd>
S2コンテナでは、コンポーネントの定義や値の定義に、式を利用することが出来ます。標準では、OGNL式をサポートしています。
</dd>
<dt>外部情報へのアクセス方法(<a href="ExternalContext.html">ExternalContext</a>)</dt>
<dd>
S2コンテナの外部に保持したコンポーネントへアクセスするための方法を定義しています。
例えば、Webコンテナやポートレットのrequestスコープに保持したコンポーネントへのアクセス方法を定義するのに利用しています。
</dd>
<dt>コンポーネントの構築方法(~Assembler)</dt>
<dd>
S2コンテナでは、コンストラクタ、プロパティ設定、初期化メソッドの呼び出しの順に実行してコンポーネントを組み立てますが、
そのそれぞれを<a href="ConstractorAssembler.html">ConstractorAssembler</a>、
<a href="PropertyAssembler.html">PropertyAssembler</a>、
<a href="InitMethodAssembler.html">InitMethodAssembler</a>が担当します。
</dd>
</dl>
</p>
<p>
diconファイルのタグとS2コンテナの構成要素を表すインターフェースは、直接関連しています。下表にその関係を示します。
<table border="1">
<tr class="TableHeadingColor">
        <th colspan="4">タグ(Tigerアノテーション)とS2コンテナの構成要素を表すインターフェースの関係</th>
</tr>
<tr>
        <th>diconファイルタグ</th>
        <th>Tigerアノテーション</th>
        <th>要素定義インターフェース</th>
        <th>要素保有インターフェース</th>
</tr>
</tr>
        <td><components></td>
        <td style="text-align:center;">-</td>
        <td><a href="S2Container.html">S2Container</a></td>
        <td>-</td>
</tr>
<tr>
        <td><component></td>
        <td>@Component</td>
        <td><a href="ComponentDef.html">ComponentDef</a></td>
        <td>-</td>
</tr>
<tr>
        <td><arg></td>
        <td style="text-align:center;">-</td>
        <td><a href="ArgDef.html">ArgDef</a></td>
        <td><a href="ArgDefAware.html">ArgDefAware</a></td>
</tr>
<tr>
        <td><property></td>
        <td>@Binding<sup>※1</sup></td>
        <td><a href="PropertyDef.html">PropertyDef</a></td>
        <td><a href="PropertyDefAware.html">PropertyDefAware</a></td>
</tr>
<tr>
        <td><initMethod></td>
        <td>@InitMethod</td>
        <td><a href="InitMethodDef.html">InitMethodDef</a></td>
        <td><a href="InitMethodDefAware.html">InitMethodDefAware</a></td>
</tr>
<tr>
        <td><destroyMethod></td>
        <td>@DestroyMethod</td>
        <td><a href="DestroyMethodDef.html">DestroyMethodDef</a></td>
        <td><a href="DestroyMethodDefAware.html">DestroyMethodDefAware</a></td>
</tr>
<tr>
        <td><aspect></td>
        <td>@Aspect</td>
        <td><a href="AspectDef.html">AspectDef</a></td>
        <td><a href="AspectDefAware.html">AspectDefAware</a></td>
</tr>
<tr>
        <td><interType></td>
        <td>@InterType</td>
        <td><a href="InterTypeDef.html">InterTypeDef</a></td>
        <td><a href="InterTypeDefAware.html">InterTypeDefAware</a></td>
</tr>
<tr>
        <td><meta></td>
        <td style="text-align:center;">-</td>
        <td><a href="MetaDef.html">MetaDef</a></td>
        <td><a href="MetaDefAware.html">MetaDefAware</a></td>
</tr>
</table>
※1 @Propertyアノテーションは、フィールドに対応するアクセッサをコンポーネントに追加することを表します。
</p>
</body>
</html>