トップ 差分 一覧 ソース ヘルプ RSS ログイン

SpringIntegration

Springとの連携

ClickのExtrasにはSpringと連携するためのSpringClickServletが含まれており、これを利用することでページクラス等をSpringの管理下に置くことができるようになります。

 ページの生成

SpringClickServletはデフォルトのClickServletを継承しており、newPageInstance()メソッドを以下のようにオーバーライドしています。

SpringClickServletはClickとSpringを統合するために以下の2通りの方法をサポートしています。

ページクラスをSpringでインスタンス化する

ページクラスをSpringでインスタンス化する場合、Springの設定ファイルで以下のように定義します。bean要素のid属性はページのクラス名と同じものを指定します。

Clickのページクラスはスレッドセーフではないので、ページクラスを定義したbean要素のsingleton属性は必ずfalseに設定してください。

ページクラスをClickでインスタンス化する

Clickでインスタンス化されたページがSpringのApplicationContextAwareインターフェースを実装していた場合、SpringClickServletは生成したページにApplicationContextをインジェクションします。

この方法の利点はページクラスをSpringの設定ファイルに記述しなくてもよいという点です。しかし、ApplicationContextからBeanを取得するためのコードをハードコーディングしなければならないというデメリットも存在します。

 アプリケーションコンテキストの設定

SpringのBeanは通常、applicationContext.xmlというファイルで定義されます。applicationContext.xmlには以下の2通りの配置方法があります。

WEB-INFディレクトリに配置する

1つめは設定ファイルを/WEB-INF/applicationContext.xmlに配置し、web.xmlでSpringのContextLoaderListenerを使用して設定ファイルを読み込む方法です。

この方法は、アプリケーションの実行中にapplicationContext.xmlに変更が加えられた場合にSpringによって自動的に変更が反映されるというメリットがあります。

クラスパスに配置する

2つめは、applicationContext.xmlをクラスパス上に配置する方法です。たとえば/WEB-INF/classes/applicationContext.xmlに設定ファイルを配置したとします。この場合、web.xmlでSpringClickServletの初期化パラメータで設定ファイルのパスを指定します。