public class ContextLoader extends ObjectSE
ContextLoaderListener
によって呼び出されます。web.xml
context-param レベルで "contextClass"
パラメーターを探してコンテキストクラス型を指定し、見つからない場合は XmlWebApplicationContext
にフォールバックします。デフォルトの ContextLoader 実装では、指定されたコンテキストクラスは ConfigurableWebApplicationContext
インターフェースを実装する必要があります。
"contextConfigLocation"
context-param を処理し、その値をコンテキストインスタンスに渡し、コンマとスペースをいくつでも区切ることができる潜在的に複数のファイルパスに解析します。「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)
メソッドを参照してください。
Spring 3.1 以降、ContextLoader
は、ContextLoader(WebApplicationContext)
コンストラクターを介したルート Web アプリケーションコンテキストの挿入をサポートし、Servlet 3.0+ 環境でのプログラムによる構成を可能にします。使用例については、WebApplicationInitializer
を参照してください。
ContextLoaderListener
, ConfigurableWebApplicationContext
, XmlWebApplicationContext
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | CONFIG_LOCATION_PARAM ルートコンテキストの構成場所を指定できるサーブレットコンテキストパラメーターの名前( "contextConfigLocation" )。それ以外の場合は、実装のデフォルトにフォールバックします。 |
static StringSE | CONTEXT_CLASS_PARAM 使用するルート WebApplicationContext 実装クラスの構成パラメーター: "contextClass"。 |
static StringSE | CONTEXT_ID_PARAM ルート WebApplicationContext ID の構成パラメーター。基礎となる BeanFactory の直列化 ID として使用されます: "contextId"。 |
static StringSE | CONTEXT_INITIALIZER_CLASSES_PARAM ルート Web アプリケーションコンテキストの初期化に使用する ApplicationContextInitializer クラスの構成パラメーター: "contextInitializerClasses"。 |
static StringSE | GLOBAL_INITIALIZER_CLASSES_PARAM 現在のアプリケーション内のすべての Web アプリケーションコンテキストを初期化するために使用するグローバル ApplicationContextInitializer クラスの構成パラメーター: "globalInitializerClasses"。 |
コンストラクターと説明 |
---|
ContextLoader() "contextClass" および "contextConfigLocation" サーブレット context-params に基づいて Web アプリケーションコンテキストを作成する新しい ContextLoader を作成します。 |
ContextLoader(WebApplicationContext context) 指定されたアプリケーションコンテキストで新しい ContextLoader を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | closeWebApplicationContext(ServletContextEE servletContext) 指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを閉じます。 |
protected void | configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac, ServletContextEE sc) |
protected WebApplicationContext | createWebApplicationContext(ServletContextEE sc) このローダーのルート WebApplicationContext を、デフォルトのコンテキストクラスまたは指定されている場合はカスタムコンテキストクラスのいずれかでインスタンス化します。 |
protected void | customizeContext(ServletContextEE sc, ConfigurableWebApplicationContext wac) 構成の場所がコンテキストに提供された後、コンテキストがリフレッシュされる前に、この ContextLoader によって作成された ConfigurableWebApplicationContext をカスタマイズします。 |
protected ClassSE<?> | determineContextClass(ServletContextEE servletContext) 使用する WebApplicationContext 実装クラス(デフォルトの XmlWebApplicationContext または指定されている場合はカスタムコンテキストクラス)を返します。 |
protected ListSE<ClassSE<ApplicationContextInitializer<ConfigurableApplicationContext>>> | determineContextInitializerClasses(ServletContextEE servletContext) CONTEXT_INITIALIZER_CLASSES_PARAM で指定されている場合に使用する ApplicationContextInitializer 実装クラスを返します。 |
static WebApplicationContext | getCurrentWebApplicationContext() 現在のスレッドの Spring ルート Web アプリケーションコンテキストを取得します(つまり |
WebApplicationContext | initWebApplicationContext(ServletContextEE servletContext) 構築時に提供されたアプリケーションコンテキストを使用して、指定されたサーブレットコンテキストの Spring の Web アプリケーションコンテキストを初期化するか、" contextClass " および "contextConfigLocation " context-params に従って新しいものを作成します。 |
protected ApplicationContext | loadParentContext(ServletContextEE servletContext) ルート WebApplicationContext の親コンテキストとして使用される ApplicationContext インスタンスをロードまたは取得するための、デフォルトの実装(サブクラスによってオーバーライドされる可能性がある)を持つテンプレートメソッド。 |
void | setContextInitializers(ApplicationContextInitializer<?>... initializers) この ContextLoader で使用されるアプリケーションコンテキストを初期化するために使用する ApplicationContextInitializer インスタンスを指定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE CONTEXT_ID_PARAM
public static final StringSE CONFIG_LOCATION_PARAM
public static final StringSE CONTEXT_CLASS_PARAM
public static final StringSE CONTEXT_INITIALIZER_CLASSES_PARAM
ApplicationContextInitializer
クラスの構成パラメーター: "contextInitializerClasses"。public static final StringSE GLOBAL_INITIALIZER_CLASSES_PARAM
ApplicationContextInitializer
クラスの構成パラメーター: "globalInitializerClasses"。public ContextLoader()
ContextLoader
を作成します。それぞれのデフォルト値の詳細については、クラスレベルのドキュメントを参照してください。 このコンストラクターは通常、引数なしのコンストラクターが必要であるため、ContextLoaderListener
サブクラスを web.xml
内の <listener>
として宣言するときに使用されます。
作成されたアプリケーションコンテキストは属性名 WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
で ServletContext に登録され、サブクラスはコンテナーのシャットダウン時に closeWebApplicationContext(javax.servlet.ServletContext)
メソッドを自由に呼び出してアプリケーションコンテキストを閉じることができます。
public ContextLoader(WebApplicationContext context)
ContextLoader
を作成します。このコンストラクターは、ServletContext.addListener(java.lang.String)
EE API を介してリスナーのインスタンスベースの登録が可能な Servlet 3.0+ 環境で役立ちます。 コンテキストはまだリフレッシュされている場合とされていない場合があります。(a)ConfigurableWebApplicationContext
の実装であり、(b)がまだリフレッシュされていない場合(推奨されるアプローチ)、次のことが発生します。
ServletContext
および ServletConfig
オブジェクトは、アプリケーションコンテキストに委譲されます。customizeContext(javax.servlet.ServletContext, org.springframework.web.context.ConfigurableWebApplicationContext)
が呼び出されます ApplicationContextInitializers
が適用されます。refresh()
が呼び出されますConfigurableWebApplicationContext
を実装していない場合、ユーザーが特定のニーズに応じてこれらのアクションを実行した(または実行しない)という仮定では、上記のいずれも発生しません。 使用例については、WebApplicationInitializer
を参照してください。
いずれの場合も、指定されたアプリケーションコンテキストは属性名 WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
で ServletContext に登録され、サブクラスはコンテナーのシャットダウン時に closeWebApplicationContext(javax.servlet.ServletContext)
メソッドを自由に呼び出してアプリケーションコンテキストを閉じることができます。
context
- 管理するアプリケーションコンテキスト initWebApplicationContext(ServletContext)
, closeWebApplicationContext(ServletContext)
public void setContextInitializers(@Nullable ApplicationContextInitializer<?>... initializers)
ContextLoader
で使用されるアプリケーションコンテキストを初期化するために使用する ApplicationContextInitializer
インスタンスを指定します。public WebApplicationContext initWebApplicationContext(ServletContextEE servletContext)
contextClass
" および "contextConfigLocation
" context-params に従って新しいものを作成します。servletContext
- 現在のサーブレットコンテキスト ContextLoader(WebApplicationContext)
, CONTEXT_CLASS_PARAM
, CONFIG_LOCATION_PARAM
protected WebApplicationContext createWebApplicationContext(ServletContextEE sc)
この実装は、カスタムコンテキストが ConfigurableWebApplicationContext
インターフェースを実装することを期待しています。サブクラスでオーバーライドできます。
さらに、customizeContext(javax.servlet.ServletContext, org.springframework.web.context.ConfigurableWebApplicationContext)
はコンテキストをリフレッシュする前に呼び出されるため、サブクラスはコンテキストにカスタム変更を実行できます。
sc
- 現在のサーブレットコンテキスト ConfigurableWebApplicationContext
protected ClassSE<?> determineContextClass(ServletContextEE servletContext)
servletContext
- 現在のサーブレットコンテキスト CONTEXT_CLASS_PARAM
, XmlWebApplicationContext
protected void configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac, ServletContextEE sc)
protected void customizeContext(ServletContextEE sc, ConfigurableWebApplicationContext wac)
ConfigurableWebApplicationContext
をカスタマイズします。デフォルトの実装は、コンテキスト初期化子クラス(存在する場合)がコンテキスト初期化パラメーターを介して指定されていることを判別し、特定の Web アプリケーションコンテキストでそれぞれを呼び出します。
Ordered
を実装する、または @Order
でマークされた ApplicationContextInitializers
は、適切にソートされます。
sc
- 現在のサーブレットコンテキスト wac
- 新しく作成されたアプリケーションコンテキスト CONTEXT_INITIALIZER_CLASSES_PARAM
, ApplicationContextInitializer.initialize(ConfigurableApplicationContext)
protected ListSE<ClassSE<ApplicationContextInitializer<ConfigurableApplicationContext>>> determineContextInitializerClasses(ServletContextEE servletContext)
CONTEXT_INITIALIZER_CLASSES_PARAM
で指定されている場合に使用する ApplicationContextInitializer
実装クラスを返します。servletContext
- 現在のサーブレットコンテキスト CONTEXT_INITIALIZER_CLASSES_PARAM
@Nullable protected ApplicationContext loadParentContext(ServletContextEE servletContext)
ここで親コンテキストをロードする主な理由は、複数のルート Web アプリケーションコンテキストをすべて共有 EAR コンテキストの子にできるようにするか、EJB から見える同じ親コンテキストも共有できるようにするためです。純粋な Web アプリケーションの場合、通常、ルート Web アプリケーションコンテキストへの親コンテキストを持つことを心配する必要はありません。
デフォルトの実装は、5.0 以降、単に null
を返します。
servletContext
- 現在のサーブレットコンテキスト null
public void closeWebApplicationContext(ServletContextEE servletContext)
loadParentContext(ServletContext)
をオーバーライドする場合は、このメソッドもオーバーライドする必要がある場合があります。
servletContext
- WebApplicationContext が実行される ServletContext@Nullable public static WebApplicationContext getCurrentWebApplicationContext()
null
SpringBeanAutowiringSupport