クラス 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を作成します。メソッドのサマリー
修飾子と型メソッド説明voidcloseWebApplicationContext(jakarta.servlet.ServletContext servletContext) 指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを閉じます。protected voidconfigureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac, jakarta.servlet.ServletContext sc) protected WebApplicationContextcreateWebApplicationContext(jakarta.servlet.ServletContext sc) このローダーのルート WebApplicationContext を、デフォルトのコンテキストクラスまたは指定されている場合はカスタムコンテキストクラスのいずれかでインスタンス化します。protected voidcustomizeContext(jakarta.servlet.ServletContext sc, ConfigurableWebApplicationContext wac) 構成の場所がコンテキストに提供された後、コンテキストがリフレッシュされる前に、この ContextLoader によって作成されたConfigurableWebApplicationContextをカスタマイズします。protected ClassSE<?> determineContextClass(jakarta.servlet.ServletContext servletContext) 使用する WebApplicationContext 実装クラス(デフォルトの XmlWebApplicationContext または指定されている場合はカスタムコンテキストクラス)を返します。determineContextInitializerClasses(jakarta.servlet.ServletContext servletContext) CONTEXT_INITIALIZER_CLASSES_PARAMで指定されている場合に使用するApplicationContextInitializer実装クラスを返します。static @Nullable WebApplicationContext現在のスレッドの Spring ルート Web アプリケーションコンテキストを取得します(つまりinitWebApplicationContext(jakarta.servlet.ServletContext servletContext) 構築時に提供されたアプリケーションコンテキストを使用して、指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを初期化するか、"contextClass" および "contextConfigLocation" context-params に従って新しいものを作成します。protected @Nullable ApplicationContextloadParentContext(jakarta.servlet.ServletContext servletContext) ルート WebApplicationContext の親コンテキストとして使用される ApplicationContext インスタンスをロードまたは取得するための、デフォルトの実装(サブクラスによってオーバーライドされる可能性がある)を持つテンプレートメソッド。voidsetContextInitializers(ApplicationContextInitializer<?> @Nullable... 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(ServletContext)メソッドを自由に呼び出してアプリケーションコンテキストを閉じることができます。- 関連事項:
ContextLoader
指定されたアプリケーションコンテキストで新しいContextLoaderを作成します。このコンストラクターは、ServletContext.addListener(String)API を介してインスタンスベースのリスナー登録が可能なサーブレット初期化子で役立ちます。コンテキストはまだリフレッシュされている場合とされていない場合があります。(a)
ConfigurableWebApplicationContextの実装であり、(b)がまだリフレッシュされていない場合(推奨されるアプローチ)、次のことが発生します。- 指定されたコンテキストにまだ id が割り当てられていない場合、1 つが割り当てられます
ServletContextおよびServletConfigオブジェクトは、アプリケーションコンテキストに委譲されます。customizeContext(ServletContext, ConfigurableWebApplicationContext)が呼び出されます- "contextInitializerClasses" 初期化パラメーターで指定された
ApplicationContextInitializersが適用されます。 refresh()が呼び出されます
ConfigurableWebApplicationContextを実装していない場合、ユーザーが特定のニーズに応じてこれらのアクションを実行した(または実行しない)という仮定では、上記のいずれも発生しません。使用例については、
WebApplicationInitializerを参照してください。いずれの場合も、指定されたアプリケーションコンテキストは属性名
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTEで ServletContext に登録され、サブクラスはコンテナーのシャットダウン時にcloseWebApplicationContext(ServletContext)メソッドを自由に呼び出してアプリケーションコンテキストを閉じることができます。- パラメーター:
rootContext- 管理するアプリケーションコンテキスト- 関連事項:
メソッドの詳細
setContextInitializers
このContextLoaderで使用されるアプリケーションコンテキストを初期化するために使用するApplicationContextInitializerインスタンスを指定します。- 導入:
- 4.2
- 関連事項:
initWebApplicationContext
public WebApplicationContext initWebApplicationContext(jakarta.servlet.ServletContext servletContext) 構築時に提供されたアプリケーションコンテキストを使用して、指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを初期化するか、"contextClass" および "contextConfigLocation" context-params に従って新しいものを作成します。- パラメーター:
servletContext- 現在のサーブレットコンテキスト- 戻り値:
- 新しい WebApplicationContext
- 関連事項:
createWebApplicationContext
このローダーのルート WebApplicationContext を、デフォルトのコンテキストクラスまたは指定されている場合はカスタムコンテキストクラスのいずれかでインスタンス化します。この実装は、カスタムコンテキストが
ConfigurableWebApplicationContextインターフェースを実装することを期待しています。サブクラスでオーバーライドできます。さらに、
customizeContext(ServletContext, ConfigurableWebApplicationContext)はコンテキストをリフレッシュする前に呼び出されるため、サブクラスはコンテキストにカスタム変更を実行できます。- パラメーター:
sc- 現在のサーブレットコンテキスト- 戻り値:
- ルート WebApplicationContext
- 関連事項:
determineContextClass
使用する WebApplicationContext 実装クラス(デフォルトの XmlWebApplicationContext または指定されている場合はカスタムコンテキストクラス)を返します。- パラメーター:
servletContext- 現在のサーブレットコンテキスト- 戻り値:
- 使用する WebApplicationContext 実装クラス
- 関連事項:
configureAndRefreshWebApplicationContext
protected void configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac, jakarta.servlet.ServletContext sc) customizeContext
protected void customizeContext(jakarta.servlet.ServletContext sc, ConfigurableWebApplicationContext wac) 構成の場所がコンテキストに提供された後、コンテキストがリフレッシュされる前に、この ContextLoader によって作成されたConfigurableWebApplicationContextをカスタマイズします。デフォルトの実装は、コンテキスト初期化子クラス(存在する場合)がコンテキスト初期化パラメーターを介して指定されていることを判別し、特定の Web アプリケーションコンテキストでそれぞれを呼び出します。
Orderedを実装する、または @OrderでマークされたApplicationContextInitializersは、適切にソートされます。- パラメーター:
sc- 現在のサーブレットコンテキストwac- 新しく作成されたアプリケーションコンテキスト- 関連事項:
determineContextInitializerClasses
protected ListSE<ClassSE<ApplicationContextInitializer<ConfigurableApplicationContext>>> determineContextInitializerClasses(jakarta.servlet.ServletContext servletContext) CONTEXT_INITIALIZER_CLASSES_PARAMで指定されている場合に使用するApplicationContextInitializer実装クラスを返します。- パラメーター:
servletContext- 現在のサーブレットコンテキスト- 関連事項:
loadParentContext
protected @Nullable ApplicationContext loadParentContext(jakarta.servlet.ServletContext servletContext) ルート WebApplicationContext の親コンテキストとして使用される ApplicationContext インスタンスをロードまたは取得するための、デフォルトの実装(サブクラスによってオーバーライドされる可能性がある)を持つテンプレートメソッド。メソッドからの戻り値が null の場合、親コンテキストは設定されません。ここで親コンテキストをロードする主な理由は、複数のルート Web アプリケーションコンテキストをすべて共有 EAR コンテキストの子にできるようにするか、EJB から見える同じ親コンテキストも共有できるようにするためです。純粋な Web アプリケーションの場合、通常、ルート Web アプリケーションコンテキストへの親コンテキストを持つことを心配する必要はありません。
デフォルトの実装は、5.0 以降、単に
nullを返します。- パラメーター:
servletContext- 現在のサーブレットコンテキスト- 戻り値:
- 親アプリケーションコンテキスト。ない場合は
null
closeWebApplicationContext
public void closeWebApplicationContext(jakarta.servlet.ServletContext servletContext) 指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを閉じます。loadParentContext(ServletContext)をオーバーライドする場合は、このメソッドもオーバーライドする必要がある場合があります。- パラメーター:
servletContext- WebApplicationContext が実行される ServletContext
getCurrentWebApplicationContext
現在のスレッドの Spring ルート Web アプリケーションコンテキストを取得します(つまり、現在のスレッドのコンテキスト ClassLoader です。これは、Web アプリケーションの ClassLoader である必要があります)。- 戻り値:
- 現在のルート Web アプリケーションコンテキスト。見つからない場合は
null - 関連事項: