前に2つほどSpring Framework2.5のエントリを書きました。
前回のエントリは、とりあえず動くものを!というスタンスで書いてあります。
- [Java][NetBeans]Spring Framework 2.5入門 その1
- [Java][NetBeans]Spring Framework 2.5入門 その2
今回からは、ちょっと立ち返って基本からおさえていこうと思います。
ということで、今回のネタはSpring Frameworkのコンテナの作り方です。
Hello world作った時にもClassPathXmlApplicationContextというクラスのインスタンスを作ってますが、要はこいつのことです。
コンテナのクラス
コンテナには、下に示す2つのインターフェースを実装したクラスをよく使います。
- org.springframework.beans.factory.BeanFactory
- org.springframework.context.ApplicationContext
BeanFactoryは、非常にシンプルで、基本的にコンテナ内にあるオブジェクトを取得するためのメソッドが中心に定義されています。
ApplicationContextは、BeanFactoryに比べるととても複雑です。Spring Frameworkが備える便利機能とかを使うためにはこちらを使うことになります。(実はApplicationContextはBeanFactoryを拡張したもの)ということで、ここではApplicationContextについて中心的に見ていきます。
さて、ApplicationContextが機能盛りだくさんと書きましたが、基本的にインターフェースなので実装が無いと話しになりません。ApplicationContextを実装したクラスとしてよく使うのが、Hello worldの時にも出てきたClassPathXmlApplicationContextになります。これは、クラスパス上の定義ファイルを読み込むコンテナです。実際問題クラスパス上のものを読むのがほとんどなので、これを使っていれば間違いありません。因みに、ファイルシステム上の構成ファイルを読み込むFileSystemXmlApplicationContextというクラスもあります。
ということで、コンテナのインスタンスを作成してみます。
クラスパス上の何処か(ここではルートに置きました)に、application.xmlという名前のファイルを作って中身を以下のようにします。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
</beans>
恐らくこれが、最小のSpringの定義ファイルになります。
この定義ファイルを読み込んでClassPathXmlApplicationContextクラスのインスタンスを作ります。
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
ApplicationContext context = new ClassPathXmlApplicationContext(
"application.xml");
コンストラクタの引数に、さっき作った定義ファイルへのパスを指定します。配列を指定することで、複数の定義ファイルを読み込むことも出来ます。
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"application.xml", "other.xml"});
ということで、今回は、コンテナの作り方でした。