2008年09月01日

3.2.3.1 Naming Beans

3.2.3.1 Beanの命名
すべてのbeanは1つもしくは複数のID(識別子あるいは単に名前とも呼びますが同じ意味です)を持っています。これらのIDはひとつのそれを使用するコンテナ内でユニークでなければなりません。ほとんどの場合においてひとつのbeanはひとつのIDを持ちますが、複数のIDを持つ場合には2つ目以降のIDはエイリアスであるとみなされます。

XMLによる設定を使用する場合であれば、「id」属性もしくは「name」属性によってbeanのIDを指定することができます。「id」属性は1つのIDのみを指定することができます。

「id」属性はXMLにおいても要素が持つ属性として定義されているので、XMLパーサが他の要素からの参照についてバリデーションを行うことができます。そのためIDの指定にはこの方法を推奨しています。しかしXMLの使用ではXMLのID属性として使用可能な文字を限定しています。多くの場合においてこれは制約とはならないでしょうが、これに反する特殊文字を使用する必要がある場合には「name」属性を使用してください。またID以外のエイリアスを導入する場合にも「name」属性を使用します。「id」属性と同時に使用することもできますし、「id」属性を省略して代わりに使用することもできます。また複数のIDを指定する場合にはカンマ(,)かセミコロン(;)または半角空白で区切って指定することができます。

Beanに名前をつけることは必須ではありません。名前が明示されない場合にはコンテナはユニークな名前を生成して使用します。Beanに名前をつけない意味については後ほど述べます(ひとつの例としては「3.3.2.3 内部ビーン」が挙げられます)。

Beanの命名規約
Beanの(少なくともSpring開発チーム内で使用されている)命名規約は標準的なJavaの規約のインスタンスフィールドと同じものです。つまり小文字で始まり以降はキャメルケースとなります。具体例を挙げれば「accountManager」や「accountService」、「userDao」、「loginController」といったような形になります。
一貫した命名法を使用することによって、長期間にわたって設定の可読性をあげ理解しやすいものにすることができます。こうした規約を採用することは困難なことではありませんし、Spring AOPを使用する場合にbeanの命名に適用することですぐにそれ以上の利益が得られるでしょう。


3.2.3.1.1 Beanにエイリアスをつける
Bean定義中に「id」属性にひとつまで、「name」属性にひとつ以上の名前を指定することで、beanに対してひとつ以上の名前をつけることができます。これらの名前は、どれもひとつのbeanに対するエイリアスであるとみなされます。これはアプリケーションで使用される各コンポーネントにおいて、そのコンポーネント固有の名前で共通のbeanを参照する際などの場合に価値を発揮します。

しかしbeanを定義するときにすべてのエイリアスを指定することが適切でない場合もあります。どこか別の場所で定義されたbeanに対してエイリアスをつけることが望ましいこともあるでしょう。XMLによる設定ファイル中では<alias/>要素を使用することによってこれを実現することができます。

<alias name="fromName" alias="toName"/>


このケースでは「fromName」と名付けられたbeanを、同一コンテナ内であればこの定義以降「toName」という名前でも参照することができるようになります。

具体例を挙げてみましょう。AというコンポーネントがそのXML設定の中で「componentA-dataSource」というDataSource beanを定義しているとします。BというコンポーネントではそのDataSource beanを「componentB-dataSource」というなでXML設定から参照しようとしています。そしてMyAppというメインのアプリケーションはその設定中で上記の3つの設定からアプリケーションコンテキストを組み立て、DateSourceを「myApp-dataSource」として参照したいというケースです。この場合にはMyAppの設定部分で以下のalias要素を追加するだけで目的を達成できます:

<alias name="componentA-dataSource" alias="componentB-dataSource"/>
<alias name="componentA-dataSource" alias="myApp-dataSource">


こうすることでA、B二つのコンポーネントとメインアプリケーションから同じビーンを参照しているにも関わらず、ユニークで他コンポーネントの定義に干渉しないことが保障された名前を使用することができるようになります(事実上ネームスペースがあるのと同じです)。


原文:http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-beanname

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。