インターフェース Scope
- すべての既知の実装クラス:
AbstractRequestAttributesScope
、RequestScope
、ServletContextScope
、SessionScope
、SimpleThreadScope
、SimpleTransactionScope
、SimpSessionScope
ConfigurableBeanFactory
によって使用される戦略インターフェース。これにより、specific key
に登録されたカスタムスコープを追加して、BeanFactory の標準スコープ "singleton"
および "prototype"
を継承できます。WebApplicationContext
などの ApplicationContext
実装では、このスコープ SPI に基づいて、"request"
や "session"
など、環境に固有の追加の標準スコープを登録できます。
その主な用途が Web 環境の拡張スコープである場合でも、この SPI は完全に汎用的です。HTTP セッションやカスタムの会話メカニズムなど、基盤となるストレージメカニズムからオブジェクトを取得および配置する機能を提供します。このクラスの get
および remove
メソッドに渡される名前は、現在のスコープ内のターゲットオブジェクトを識別します。
Scope
実装は、スレッドセーフであることが期待されています。1 つの Scope
インスタンスは、必要に応じて(含まれる BeanFactory を明示的に認識したい場合を除き)、任意の数のファクトリから Scope
に同時にアクセスするスレッドで、複数の Bean ファクトリで同時に使用できます。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller, Rob Harrop
- 関連事項:
メソッドのサマリー
修飾子と型メソッド説明get
(StringSE name, ObjectFactory<?> objectFactory) 基になるスコープから指定された名前のオブジェクトを返します。基になるストレージメカニズムで見つからない場合はcreating it
。存在する場合、現在の基礎となるスコープの会話 ID を返します。void
registerDestructionCallback
(StringSE name, RunnableSE callback) スコープ内の指定されたオブジェクトの破棄(またはスコープが個々のオブジェクトを破棄せず、その全体で終了する場合はスコープ全体の破棄)で実行されるコールバックを登録します。指定されたname
を持つオブジェクトを基になるスコープから削除します。指定されたキーがある場合、そのコンテキストオブジェクトを解決します。
メソッドの詳細
get
基になるスコープから指定された名前のオブジェクトを返します。基になるストレージメカニズムで見つからない場合はcreating it
。これは、Scope の中心的な操作であり、絶対に必要な唯一の操作です。
- パラメーター:
name
- 取得するオブジェクトの名前objectFactory
- 基になるストレージメカニズムに存在しない場合、スコープオブジェクトの作成に使用するObjectFactory
- 戻り値:
- 目的のオブジェクト (非
null
) - 例外:
IllegalStateExceptionSE
- 基になるスコープが現在アクティブでない場合
remove
指定されたname
を持つオブジェクトを基になるスコープから削除します。オブジェクトが見つからなかった場合、
null
を返します。それ以外の場合は、削除されたObject
を返します。実装は、指定されたオブジェクトの登録された破棄コールバックも削除する必要があることに注意してください。ただし、この場合、登録された破棄コールバックを実行する必要はありません。オブジェクトは呼び出し元によって破棄されるためです(適切な場合)。
注: これはオプションの操作です。実装は、オブジェクトの明示的な削除をサポートしていない場合、
UnsupportedOperationException
SE をスローする場合があります。- パラメーター:
name
- 削除するオブジェクトの名前- 戻り値:
- 削除されたオブジェクト、またはオブジェクトが存在しない場合は
null
- 例外:
IllegalStateExceptionSE
- 基になるスコープが現在アクティブでない場合- 関連事項:
registerDestructionCallback
スコープ内の指定されたオブジェクトの破棄(またはスコープが個々のオブジェクトを破棄せず、その全体で終了する場合はスコープ全体の破棄)で実行されるコールバックを登録します。注: これはオプションの操作です。このメソッドは、実際の破棄構成(DisposableBean、destroy-method、DestructionAwareBeanPostProcessor)を持つスコープ付き Bean に対してのみ呼び出されます。実装は、適切なタイミングで特定のコールバックを実行するために最善を尽くす必要があります。そのようなコールバックが基礎となるランタイム環境によってまったくサポートされていない場合、コールバックは無視され、対応する警告がログに記録される必要があります。
「破棄」とは、アプリケーションによって明示的に削除された個々のスコープオブジェクトではなく、スコープ自体のライフサイクルの一部としてオブジェクトを自動的に破棄することです。スコープ付きオブジェクトがこのファサードの
remove(String)
メソッドを介して削除された場合、削除されたオブジェクトが再利用されるか手動で破棄されると仮定して、登録されている破棄コールバックも削除する必要があります。- パラメーター:
name
- 破棄コールバックを実行するオブジェクトの名前callback
- 実行される破棄コールバック。渡された Runnable は例外をスローしないため、try-catch ブロックを囲むことなく安全に実行できることに注意してください。さらに、Runnable は通常、そのターゲットオブジェクトも直列化可能であれば、直列化可能です。- 例外:
IllegalStateExceptionSE
- 基になるスコープが現在アクティブでない場合- 関連事項:
resolveContextualObject
指定されたキーのコンテキストオブジェクトを解決します (存在する場合)。例: キー "request" の HttpServletRequest オブジェクト。- パラメーター:
key
- コンテキストキー- 戻り値:
- 対応するオブジェクト。見つからない場合は
null
- 例外:
IllegalStateExceptionSE
- 基になるスコープが現在アクティブでない場合
getConversationId
存在する場合、現在の基礎となるスコープの会話 ID を返します。会話 ID の正確な意味は、基礎となるストレージメカニズムによって異なります。セッションスコープのオブジェクトの場合、会話 ID は通常
session ID
EE と等しい(または派生する)でしょう。セッション全体に含まれるカスタム会話の場合、現在の会話の特定の ID が適切です。注: これはオプションの操作です。基になるストレージメカニズムにこのような ID の明らかな候補がない場合、このメソッドの実装で
null
を返すことは完全に有効です。- 戻り値:
- 会話 ID、または現在のスコープに会話 ID がない場合は
null
- 例外:
IllegalStateExceptionSE
- 基になるスコープが現在アクティブでない場合