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に注入することがあれば、それには細心の注意が必要になるということです。そんなこと、普通はしないでしょうけどね。