S2コンテナとその構成要素を定義するインターフェースおよび、S2コンテナの振舞いに関連した例外クラスを提供します。

このパッケージを構成する主な要素は、以下のとおりです。

コンテナ本体（S2Container）
  S2コンテナ本体は、各コンポーネントの定義情報を保持し、必要に応じてコンポーネントの生成・提供を行います。 S2コンテナは階層構造を持つことができます。階層関係はdiconファイルの<include>要素で指定します。
定義情報（～Def）
  diconファイルやアノテーションで指定されたコンポーネントの定義情報は、S2コンテナ上では ComponentDef、PropertyDef などの定義情報として保持されます。
定義情報の所有（～DefAware）
  定義情報を所有可能であることを表すインターフェースです。 定義情報の追加、定義情報の数の取得、定義情報の取得の3種類のメソッドを提供します。 diconファイルにおける定義情報の所有関係の例としては、 <component>要素(PropertyDefAware)と<property>要素(PropertyDef) の関係などが挙げられます。
式（Expression）
  S2コンテナでは、コンポーネントの定義や値の定義に、式を利用することが出来ます。標準ではOGNL式をサポートしています。
外部コンテキスト（ExternalContext）
  Webコンテナやポートレットコンテナで管理されるコンポーネントへのアクセス手段を提供します。 例えば、Webコンテナのrequestスコープコンポーネント(HttpServletRequest)の取得や設定を行うことが出来ます。
コンポーネントの構築（～Assembler）
  S2コンテナでは、コンストラクタ、プロパティ設定、初期化メソッドを順に実行してコンポーネントを組み立てます。 それぞれの処理をConstructorAssembler、 PropertyAssembler、 MethodAssemblerが担当します。 （MethodAssemblerは、S2コンテナによって管理されているコンポーネントが破棄される際の destroyメソッドとしても用いられます）
SMART deploy (HOT / WARM / COOL deploy)
  規約に従って作成されたクラスを、S2コンテナが管理するコンポーネントとして自動的に登録する機能を提供します。 この機能に関連するインターフェースとしてComponentCreator、 ComponentCustomizer、 ComponentDeployerがあります。

#### diconファイルタグと定義情報インターフェース

この表は、diconファイルのタグ(及びTigerアノテーション)と定義情報を表すインターフェース(及び定義情報の所有を表すインターフェース)の関係を示しています。

#### diconファイルタグと定義情報インターフェースの関係

diconファイルタグ | Tigerアノテーション | 定義情報インタフェース(～Def) | 定義情報の所有インターフェース(～DefAware)
--- | --- | --- | ---
<components> | - | S2Container | -
<component> | @Component | ComponentDef | -
<arg> | - | ArgDef | ArgDefAware
<property> | @Binding | PropertyDef | PropertyDefAware
<initMethod> | @InitMethod | InitMethodDef | InitMethodDefAware
<destroyMethod> | @DestroyMethod | DestroyMethodDef | DestroyMethodDefAware
<aspect> | @Aspect | AspectDef | AspectDefAware
<interType> | @InterType | InterTypeDef | InterTypeDefAware
<meta> | - | MetaDef | MetaDefAware