クラス ContextLoader
- 既知の直属サブクラス
ContextLoaderListener
ContextLoaderListener
によって呼び出されます。web.xml
context-param レベルで "contextClass"
パラメーターを探してコンテキストクラス型を指定し、見つからない場合は XmlWebApplicationContext
にフォールバックします。デフォルトの ContextLoader 実装では、指定されたコンテキストクラスは ConfigurableWebApplicationContext
インターフェースを実装する必要があります。
"contextConfigLocation"
コンテキストパラメーターを処理し、その値をコンテキストインスタンスに渡して、複数のファイルパスに解析します。複数のファイルパスは、任意の数のコンマとスペースで区切ることができます (例: "WEB-INF/applicationContext1.xml, WEB-INF/applicationContext2.xml")。Ant スタイルのパスパターンもサポートされています (例: "WEB-INF/*Context.xml,WEB-INF/spring*.xml" または "WEB-INF/**/*Context.xml"")。明示的に指定されていない場合、コンテキスト実装はデフォルトの場所 (XmlWebApplicationContext の場合: "/WEB-INF/applicationContext.xml") を使用します。
メモ: 複数の構成場所がある場合、少なくとも Spring のデフォルトの ApplicationContext 実装の 1 つを使用している場合、後の Bean 定義は以前にロードされたファイルで定義されたものをオーバーライドします。これを利用して、追加の XML ファイルを介して特定の Bean 定義を意図的に上書きできます。
ルートアプリケーションコンテキストのロードに加えて、このクラスはオプションで、共有親コンテキストをロードまたは取得して、ルートアプリケーションコンテキストにフックできます。詳細については、loadParentContext(ServletContext)
メソッドを参照してください。
ContextLoader
は、ContextLoader(WebApplicationContext)
コンストラクターを介したルート Web アプリケーションコンテキストの注入をサポートし、サーブレット初期化子でのプログラムによる構成を可能にします。使用例については、WebApplicationInitializer
を参照してください。
- 導入:
- 17.02.2003
- 作成者:
- Juergen Hoeller, Colin Sampaleanu, Sam Brannen
- 関連事項:
フィールドサマリー
フィールド修飾子と型フィールド説明static final StringSE
ルートコンテキストの構成場所を指定できるサーブレットコンテキストパラメーターの名前 (つまり、"contextConfigLocation" )。それ以外の場合は実装のデフォルトに戻ります。static final StringSE
使用するルート WebApplicationContext 実装クラスの構成パラメーター: "contextClass"。static final StringSE
基礎となる BeanFactory の直列化 ID として使用されるルート WebApplicationContext ID の構成パラメーター: "contextId"。static final StringSE
ルート Web アプリケーションコンテキストの初期化に使用するApplicationContextInitializer
クラスの構成パラメーター: "contextInitializerClasses"。static final StringSE
現在のアプリケーション内のすべての Web アプリケーションコンテキストを初期化するために使用するグローバルApplicationContextInitializer
クラスの構成パラメーター: "globalInitializerClasses"。コンストラクターのサマリー
コンストラクターコンストラクター説明"contextClass" および "contextConfigLocation" サーブレットコンテキストパラメーターに基づいて Web アプリケーションコンテキストを作成する新しいContextLoader
を作成します。ContextLoader
(WebApplicationContext rootContext) 指定されたアプリケーションコンテキストで新しいContextLoader
を作成します。方法の概要
修飾子と型メソッド説明void
closeWebApplicationContext
(ServletContextEE servletContext) 指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを閉じます。protected void
configureAndRefreshWebApplicationContext
(ConfigurableWebApplicationContext wac, ServletContextEE sc) protected WebApplicationContext
このローダーのルート WebApplicationContext を、デフォルトのコンテキストクラスまたは指定されている場合はカスタムコンテキストクラスのいずれかでインスタンス化します。protected void
構成の場所がコンテキストに提供された後、コンテキストがリフレッシュされる前に、この ContextLoader によって作成されたConfigurableWebApplicationContext
をカスタマイズします。protected ClassSE<?>
determineContextClass
(ServletContextEE servletContext) 使用する WebApplicationContext 実装クラス(デフォルトの XmlWebApplicationContext または指定されている場合はカスタムコンテキストクラス)を返します。determineContextInitializerClasses
(ServletContextEE servletContext) CONTEXT_INITIALIZER_CLASSES_PARAM
で指定されている場合に使用するApplicationContextInitializer
実装クラスを返します。static WebApplicationContext
現在のスレッドの Spring ルート Web アプリケーションコンテキストを取得します(つまりinitWebApplicationContext
(ServletContextEE servletContext) 構築時に提供されたアプリケーションコンテキストを使用して、指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを初期化するか、"contextClass
" および "contextConfigLocation
" context-params に従って新しいものを作成します。protected ApplicationContext
loadParentContext
(ServletContextEE servletContext) ルート WebApplicationContext の親コンテキストとして使用される ApplicationContext インスタンスをロードまたは取得するための、デフォルトの実装(サブクラスによってオーバーライドされる可能性がある)を持つテンプレートメソッド。void
setContextInitializers
(ApplicationContextInitializer<?>... initializers) このContextLoader
で使用されるアプリケーションコンテキストを初期化するために使用するApplicationContextInitializer
インスタンスを指定します。
フィールドの詳細
CONTEXT_ID_PARAM
基礎となる BeanFactory の直列化 ID として使用されるルート WebApplicationContext ID の構成パラメーター: "contextId"。- 関連事項:
CONFIG_LOCATION_PARAM
ルートコンテキストの構成場所を指定できるサーブレットコンテキストパラメーターの名前 (つまり、"contextConfigLocation" )。それ以外の場合は実装のデフォルトに戻ります。CONTEXT_CLASS_PARAM
使用するルート WebApplicationContext 実装クラスの構成パラメーター: "contextClass"。CONTEXT_INITIALIZER_CLASSES_PARAM
ルート Web アプリケーションコンテキストの初期化に使用するApplicationContextInitializer
クラスの構成パラメーター: "contextInitializerClasses"。GLOBAL_INITIALIZER_CLASSES_PARAM
現在のアプリケーション内のすべての Web アプリケーションコンテキストを初期化するために使用するグローバルApplicationContextInitializer
クラスの構成パラメーター: "globalInitializerClasses"。
コンストラクターの詳細
ContextLoader
public ContextLoader()"contextClass" および "contextConfigLocation" サーブレットコンテキストパラメーターに基づいて Web アプリケーションコンテキストを作成する新しいContextLoader
を作成します。それぞれのデフォルト値の詳細については、クラスレベルのドキュメントを参照してください。このコンストラクターは通常、引数なしのコンストラクターが必要であるため、
ContextLoaderListener
サブクラスをweb.xml
内の<listener>
として宣言するときに使用されます。作成されたアプリケーションコンテキストは属性名
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
で ServletContext に登録され、サブクラスはコンテナーのシャットダウン時にcloseWebApplicationContext(jakarta.servlet.ServletContext)
メソッドを自由に呼び出してアプリケーションコンテキストを閉じることができます。ContextLoader
指定されたアプリケーションコンテキストで新しいContextLoader
を作成します。このコンストラクターは、ServletContext.addListener(java.lang.String)
EE API を介してリスナーのインスタンスベースの登録が可能なサーブレット初期化子で役立ちます。コンテキストはまだリフレッシュされている場合とされていない場合があります。(a)
ConfigurableWebApplicationContext
の実装であり、(b)がまだリフレッシュされていない場合(推奨されるアプローチ)、次のことが発生します。- 指定されたコンテキストにまだ id が割り当てられていない場合、1 つが割り当てられます
ServletContext
およびServletConfig
オブジェクトは、アプリケーションコンテキストに委譲されます。customizeContext(jakarta.servlet.ServletContext, org.springframework.web.context.ConfigurableWebApplicationContext)
が呼び出されます- "contextInitializerClasses" 初期化パラメーターで指定された
ApplicationContextInitializers
が適用されます。 refresh()
が呼び出されます
ConfigurableWebApplicationContext
を実装していない場合、ユーザーが特定のニーズに応じてこれらのアクションを実行した(または実行しない)という仮定では、上記のいずれも発生しません。使用例については、
WebApplicationInitializer
を参照してください。いずれの場合も、指定されたアプリケーションコンテキストは属性名
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
で ServletContext に登録され、サブクラスはコンテナーのシャットダウン時にcloseWebApplicationContext(jakarta.servlet.ServletContext)
メソッドを自由に呼び出してアプリケーションコンテキストを閉じることができます。- パラメーター:
rootContext
- 管理するアプリケーションコンテキスト- 関連事項:
メソッドの詳細
setContextInitializers
このContextLoader
で使用されるアプリケーションコンテキストを初期化するために使用するApplicationContextInitializer
インスタンスを指定します。initWebApplicationContext
構築時に提供されたアプリケーションコンテキストを使用して、指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを初期化するか、"contextClass
" および "contextConfigLocation
" context-params に従って新しいものを作成します。- パラメーター:
servletContext
- 現在のサーブレットコンテキスト- 戻り値:
- 新しい WebApplicationContext
- 関連事項:
createWebApplicationContext
このローダーのルート WebApplicationContext を、デフォルトのコンテキストクラスまたは指定されている場合はカスタムコンテキストクラスのいずれかでインスタンス化します。この実装は、カスタムコンテキストが
ConfigurableWebApplicationContext
インターフェースを実装することを期待しています。サブクラスでオーバーライドできます。さらに、
customizeContext(jakarta.servlet.ServletContext, org.springframework.web.context.ConfigurableWebApplicationContext)
はコンテキストをリフレッシュする前に呼び出されるため、サブクラスはコンテキストにカスタム変更を実行できます。- パラメーター:
sc
- 現在のサーブレットコンテキスト- 戻り値:
- ルート WebApplicationContext
- 関連事項:
determineContextClass
使用する WebApplicationContext 実装クラス(デフォルトの XmlWebApplicationContext または指定されている場合はカスタムコンテキストクラス)を返します。- パラメーター:
servletContext
- 現在のサーブレットコンテキスト- 戻り値:
- 使用する WebApplicationContext 実装クラス
- 関連事項:
configureAndRefreshWebApplicationContext
protected void configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac, ServletContextEE sc) customizeContext
構成の場所がコンテキストに提供された後、コンテキストがリフレッシュされる前に、この ContextLoader によって作成されたConfigurableWebApplicationContext
をカスタマイズします。デフォルトの実装は、コンテキスト初期化子クラス(存在する場合)がコンテキスト初期化パラメーターを介して指定されていることを判別し、特定の Web アプリケーションコンテキストでそれぞれを呼び出します。
Ordered
を実装する、または @Order
でマークされたApplicationContextInitializers
は、適切にソートされます。- パラメーター:
sc
- 現在のサーブレットコンテキストwac
- 新しく作成されたアプリケーションコンテキスト- 関連事項:
determineContextInitializerClasses
protected ListSE<ClassSE<ApplicationContextInitializer<ConfigurableApplicationContext>>> determineContextInitializerClasses(ServletContextEE servletContext) CONTEXT_INITIALIZER_CLASSES_PARAM
で指定されている場合に使用するApplicationContextInitializer
実装クラスを返します。- パラメーター:
servletContext
- 現在のサーブレットコンテキスト- 関連事項:
loadParentContext
ルート WebApplicationContext の親コンテキストとして使用される ApplicationContext インスタンスをロードまたは取得するための、デフォルトの実装(サブクラスによってオーバーライドされる可能性がある)を持つテンプレートメソッド。メソッドからの戻り値が null の場合、親コンテキストは設定されません。ここで親コンテキストをロードする主な理由は、複数のルート Web アプリケーションコンテキストをすべて共有 EAR コンテキストの子にできるようにするか、EJB から見える同じ親コンテキストも共有できるようにするためです。純粋な Web アプリケーションの場合、通常、ルート Web アプリケーションコンテキストへの親コンテキストを持つことを心配する必要はありません。
デフォルトの実装は、5.0 以降、単に
null
を返します。- パラメーター:
servletContext
- 現在のサーブレットコンテキスト- 戻り値:
- 親アプリケーションコンテキスト。ない場合は
null
closeWebApplicationContext
指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを閉じます。loadParentContext(ServletContext)
をオーバーライドする場合は、このメソッドもオーバーライドする必要がある場合があります。- パラメーター:
servletContext
- WebApplicationContext が実行される ServletContext
getCurrentWebApplicationContext
現在のスレッドの Spring ルート Web アプリケーションコンテキストを取得します(つまり、現在のスレッドのコンテキスト ClassLoader です。これは、Web アプリケーションの ClassLoader である必要があります)。- 戻り値:
- 現在のルート Web アプリケーションコンテキスト。見つからない場合は
null
- 関連事項: