Spring Framework integration
Seam 1.1.7RC1がリリースされました。Seam 1.1.7ではSeamとSpringの統合が実現されます。すでにSpringを使って構築されたシステムのWeb UI部分をSeamで書き直したい、なんて場合は便利そうです。できることは次のとおり:
- Spring beanにSeam componentを注入
- Seam componentにSpring beanを注入
- Spring beanのSeam comonent化
- Spring beanで任意のSeamコンテキストをカスタムスコープとして指定
さて、マニュアルを読むとステートフルなモデルのSeamとステートレスなモデルのSpringの間のギャップに注意するようにと書かれています。これをマニュアルではscope impedanceと呼んでいます(O/Rマッピングではインピーダンス・ミスマッチという言葉がありますが、そのノリですね)。ステートフルなモデルではコンポーネントは変化しますが、ステートレスなモデルはそのような想定は置いていないからです。
具体的には、singleton Spring beanにConversation scopeのSeam componentが注入された場合、そのSpring beanはその参照先のオブジェクトの内部状態が変化したり、そのスコープの終了に伴い廃棄される、ということは想定していないでしょう。ですから、Seamの上位のスコープのcomponentがSpring beanに注入することがあれば、それには細心の注意が必要になるということです。そんなこと、普通はしないでしょうけどね。