26.4. Seam スコープの Spring Bean


Seam 統合パッケージでは Seam のコンテキストを Spring 2.0 スタイル カスタムなスコープ として使用することもできます。 これによりいずれの Seam コンテキスト内でもあらゆる Spring Bean を宣言することができます。ただし、 Spring のコンポーネントモデルはステートフル性に対応するようには設計されていなかったため、 この機能を使用する場合は十分に気を付けてください。 特に、 セッションスコープや対話スコープの Spring Bean のクラスタ化には問題があるため、 広いスコープの Bean やコンポーネントを狭いスコープの Bean にインジェクトする場合は注意が必要です。
Spring Bean ファクトリの設定で <seam:configure-scopes/> を指定し、 すべての Seam スコープがカスタムスコープとして Spring Bean に利用できるようにします。 Spring Bean を特定の Seam スコープに関連付けるには、 Bean 定義の scope 属性で目的のスコープを指定します。
<!-- Only needs to be specified once per bean factory-->
<seam:configure-scopes/>

...

<bean id="someSpringBean" class="SomeSpringBeanClass" 
      scope="seam.CONVERSATION"/>
Copy to Clipboard Toggle word wrap
configure-scopes 定義内の prefix 属性を指定することによって、 スコープ名のプレフィックスを変更することができます (デフォルトのプレフィックスは seam. です)。
デフォルトではこの方法で登録される Spring コンポーネントのインスタンスは @In を使って参照される場合に自動的に作成されません。 インスタンスを自動作成させるには、インジェクションポイントで @In(create=true) を指定するか (特定の Bean を自動作成するため)、 configure-scopesdefault-auto-create 属性を使って Seam スコープの Spring Bean がすべて自動作成されるようにします。
後者の方法では Seam スコープの Spring Bean を <seam:instance/> を使わずに他の Spring Bean にインジェクトすることができます。 ただし、スコープインピーダンスには十分注意する必要があります。 一般的には Bean 定義内で <aop:scoped-proxy/> を指定しますが、 Seam スコープの Spring Bean は <aop:scoped-proxy/> との互換性がありません。 したがって、Seam スコープ Spring Bean をシングルトンにインジェクトする場合は <seam:instance/> を使用してください。
<bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/>

...

<bean id="someSingleton">
  <property name="someSeamScopedSpringBean">
    <seam:instance name="someSpringBean" proxy="true"/>
  </property>
</bean>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat