2008年07月04日

3.2.2. Instantiating a container

3.2.2 コンテナのインスタンス化
Spring IoCコンテナのインスタンス化手順はいたって単純です。

ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"services.xml", "daos.xml"});

// an ApplicationContext is also a BeanFactory (via inheritance)
BeanFactory factory = context;


3.2.2.1 XMLによる設定メタデータを組み合わせる
コンテナ定義を複数のXMLファイルに分割して使用することは利益をもたらす場合があります。複数ファイルに分割されたApplicationContextをロードする際には、複数のリソースパスを受け取るApplicationContextのコンストラクタを使用します。BeanFactoryは複数のビーン定義を順に読み込んでいきます。

一般的な場合にはこの方法を使用することをお勧めします。なぜかといえばコンテナ設定ファイルから、他のファイルとの関連を取り除くことができるからです。しかしながら<import/>要素をひとつまたは複数使用することで他のファイルからビーン定義を読み込むこともできます。以下がサンプルです。


<beans>

<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>

<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>

</beans>


この例では3つの外部ファイル(services.xml、messageSource.xml、themeSource.xml)からビーン定義が読み込まれています。これらのファイルの場所は、インポートを記述しているファイルからの相対パスと解釈されます。したがってこのケースではservices.xmlではこのファイルと同じディレクトリになければならず、またmessageSource.xmlとthemeSource.xmlはこのファイルがあるディレクトリ以下のresourcesディレクトリの中に配置されていなければなりません。先頭のスラッシュは無視されますが、相対パスとして扱われることを表すことができるため、スラッシュを使用しないよりはベターな形式かもしれません。インポートされるファイルはSpringのスキーマもしくはDTDに準拠した妥当なXMLによる(トップレベル要素として<:bean/%gt;要素を持った)ビーン定義ファイルでなければなりません。
※注
相対パスにおいて「../」を使用して親ディレクトリを参照させることは可能ですが、アプリケーションの外側のファイルに依存することになるため推奨されていません。特に「classpath:」URL(たとえば「classpath:../services.xml」)は実行時のパス解決が「最も近い」クラスパスルートを使用して親ディレクトリを参照しようとするためお勧めできません。これはクラスパスの変更によって今までと異なるディレクトリが使用される可能性があり、ひ弱なアプリケーションになってしまいます。
また相対ではなく絶対パスによる指定(たとえば「file:C:/config/services.xml」や「classpath:/config/services.html」)をすることもできますが、その場合にはアプリケーションの設定ファイルがその特定のパスに固定されてしまうことに注意してください。一般的には、たとえば実行時のJVMのシステムプロパティーによって解決される「${...}」プレースホルダを使用するなど、絶対パスを使用する際には何らかの対応をするほうが良いでしょう。



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

広告


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

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

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


×

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