第13章 diconファイル

目次

13.1. はじめに
13.2. 基本構造
13.3. 文書型宣言
13.4. <components>要素
13.4.1. namespace属性
13.4.2. initializeOnCreate属性
13.4.3. xmlns:xi属性
13.5. <description>要素
13.6. <meta>要素
13.6.1. name属性
13.7. まとめ

13.1. はじめに

本章では,Seasar2の標準的な設定ファイルについて説明します.

Seasar2の標準的な設定ファイルはXML形式のテキストファイルであり,dicon (Dependency Injection CONfiguration) ファイルと呼ばれます. ファイルの拡張子は 'dicon' です.

13.2. 基本構造

diconファイルは次のような構造のXMLファイルです.

<?xml version="1.0" encoding="UTF-8"?>                                                   (1)
<!DOCTYPE components                                                                     (2)
  PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"                                            (3)
  "http://www.seasar.org/dtd/components24.dtd">                                          (4)
<components>                                                                             (5)
    ...
</components>
(1)

XML宣言 (任意):diconファイルの文字エンコーディングがUTF-8以外の場合は必須となります.

(2)

文書型宣言 (必須):Seasar2の定義ファイルであることを示します.

(3)

パブリックID (必須):diconファイルのパブリックIDを指定します.

(4)

システムID (必須):diconファイルのシステムIDを指定します.

(5)

<components>要素 (必須):diconファイルのルート要素です.

diconファイルは妥当 (valid) なXMLファイルでなくてはなりません.

13.3. 文書型宣言

diconファイルは妥当 (valid) なXMLファイルでなくてはなりません. そのため,文書型宣言が必須です. 文書型宣言で指定するDTDは,使用するSeasar2のバージョンによって,次の中から選択することができます (独自のDTDを使用することも可能です. 詳細は「」を参照してください).

表 13.1. DTDとSeasar2のバージョン

DTDのバージョン 利用可能なSeasar2 パブリックID
システムID
2.0 Version: 2.0~ -//SEASAR//DTD S2Container//EN
http://www.seasar.org/dtd/components.dtd
2.1 Version: 2.1~ -//SEASAR2.1//DTD S2Container//EN
http://www.seasar.org/dtd/components21.dtd
2.3 Version: 2.3~ -//SEASAR//DTD S2Container 2.3//EN
http://www.seasar.org/dtd/components23.dtd
2.4 Version: 2.4~ -//SEASAR//DTD S2Container 2.4//EN
http://www.seasar.org/dtd/components24.dtd

DTDによって指定可能な要素や属性およびその値が異なります. DTDのバージョンとそれぞれで利用可能な要素・属性・値を次の表に示します.

表 13.2. DTDのバージョンと指定可能な要素・属性・値

要素 属性 2.0 2.1 2.3 2.4
<components> (要素自体) -
namespace -
initializeOnCreate - × × ×
xmlns:xi - × × ×
<description> (要素自体) -
<include> (要素自体) -
path -
condition - × ×
<xi:include> (要素自体) - × × ×
<component> (要素自体) -
name -
class -
instance singleton
prototype
outer
request ×
session ×
application × × ×
autoBinding auto
constructor
property
none
semiauto × × ×
externalBinding - × × ×
<arg> (要素自体) -
<property> (要素自体) -
name -
bindingType - × ×
<initMethod> (要素自体) -
name -
<destroyMethod> (要素自体) -
name -
<aspect> (要素自体) -
pointcut -
<interType> (要素自体) - × × ×
<meta> (要素自体) - ×

13.4. <components>要素

-コンテナ定義-

<components>要素は,diconファイルのルート要素です.

<components
    namespace="nameSpace"                                                                (1)
    initializeOnCreate="false | true"                                                    (2)
    xmlns:xi="http://www.w3.org/2001/XInclude"                                           (3)
>
    ...
</components>
(1)

namespace (任意): このdiconファイルを読み込んだコンテナの名前空間を指定します.

(2)

initializeOnCreate (任意): コンテナの作成時に初期化も行うことを指定します. デフォルトはfalseです.

(3)

xmlns:xi (任意): XIncludeで使用する名前空間を宣言します.

<components>要素の内容には次のものを記述することができます.

  • <description>要素 (任意)

  • <include>要素 (0個以上)

  • <xi:include>要素 (0個以上)

  • <component>要素 (0個以上)

  • <meta>要素 (0個以上)

<components>要素はルート要素としてのみ記述することができます.他の要素の子となることはできません.

13.4.1. namespace属性

-名前空間-

diconファイルに定義されたコンポーネントの名前空間を指定します. 名前空間の詳細は「」を参照してください. 名前空間を指定すると,コンテナからコンポーネントを名前で取得する際に,名前空間で修飾した名前を指定することができるようになります.

名前空間は,Javaの識別子として有効な名前を指定します. JavaBeansのプロパティ名と同じルールに従うことを推奨します.

13.4.2. initializeOnCreate属性

-生成時に初期化-

(Version: 2.4.5~)

コンテナの生成時にコンテナを初期化するかしないかを指定します.

false (デフォルト)

コンテナの生成時には初期化を行いません.

true

コンテナの生成時に初期化を行います.

13.4.3. xmlns:xi属性

-XInclude名前空間宣言-

(Version: 2.4.0~)

XIncludeを使用する場合は,その名前空間を宣言します (). 名前空間接頭辞は 'xi' だけが利用可能です. 名前空間URIは 'http://www.w3.org/2001/XInclude' を指定します. この名前空間はXML名前空間仕様のものであり,namespace属性で指定するコンポーネントの名前空間とは別のものです. XIncludeの詳細は「」を参照してください.

13.5. <description>要素

-説明-

<description>要素を使用して,diconファイルの説明を記述することができます.

<description>
    ...
</description>

<description>要素の内容には次のものを記述することができます.

  • 任意のテキスト

このテキストはドキュメンテーションのためのものであり,コンテナの動作には影響を与えません.

13.6. <meta>要素

-メタ情報-

(Version: 2.1.0~)

コンテナやコンポーネント定義にメタ情報を付けることができます. メタ情報は,コンポーネントをリモートオブジェクトとして公開することを示すなど,様々な用途で使うことができます.

<meta
    name="name"                                                                          (1)
>
    ...
</meta>
(1)

name (任意): メタ情報の名前を指定します.

<meta>要素の内容には次のものを記述することができます.

  • 任意のテキスト

  • <description>要素 (0個以上)

  • <component>要素 (0個以上)

  • <meta>要素 (0個以上)

13.6.1. name属性

-メタ情報名-

メタ情報は名前を持つことができます. この名前はコンテナやコンポーネント定義からメタ情報を取得する際のキーとして使うことができます.

13.7. まとめ