public abstract class AbstractGenericWebContextLoader extends AbstractContextLoader
GenericWebApplicationContext をロードする AbstractContextLoader の抽象、汎用拡張。 具象サブクラスのインスタンスが SmartContextLoader SPI を介して呼び出される場合、コンテキストは loadContext(MergedContextConfiguration) に提供される MergedContextConfiguration からロードされます。そのような場合、SmartContextLoader は、場所またはアノテーション付きクラスからコンテキストをロードするかどうかを決定します。AbstractGenericWebContextLoader は、レガシー ContextLoader SPI の loadContext(String... locations) メソッドをサポートしないことに注意してください。
具象サブクラスは、loadBeanDefinitions(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration) の適切な実装を提供する必要があります。
loadContext(MergedContextConfiguration), loadContext(String...)| コンストラクターと説明 |
|---|
AbstractGenericWebContextLoader() |
customizeContext, generateDefaultLocations, getResourceSuffix, getResourceSuffixes, isGenerateDefaultLocations, modifyLocations, prepareContext, processContextConfiguration, processLocationscloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected static final Log logger
public final ConfigurableApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws ExceptionSE
MergedContextConfiguration から Spring WebApplicationContext をロードします。実装の詳細:
validateMergedContextConfiguration(WebMergedContextConfiguration) を呼び出して、サブクラスが続行する前に指定された構成を検証できるようにします。GenericWebApplicationContext インスタンスを作成します。MergedContextConfiguration が親構成を参照する場合、対応する ApplicationContext が取得され、このメソッドによって作成されたコンテキストの親として設定されます。MockServletContext を作成して WebApplicationContext に設定するには、configureWebResources(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration) に委譲します。AbstractContextLoader.prepareContext(org.springframework.context.ConfigurableApplicationContext, org.springframework.test.context.MergedContextConfiguration) を呼び出して、Bean 定義がロードされる前にコンテキストをカスタマイズできるようにします。customizeBeanFactory(org.springframework.beans.factory.support.DefaultListableBeanFactory, org.springframework.test.context.web.WebMergedContextConfiguration) を呼び出して、コンテキストの DefaultListableBeanFactory をカスタマイズできるようにします。loadBeanDefinitions(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration) にデリゲートして、提供された MergedContextConfiguration 内の場所またはクラスからコンテキストを設定します。AnnotationConfigUtils へのデリゲート。customizeContext(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration) を呼び出して、リフレッシュされる前にコンテキストをカスタマイズできるようにします。Refreshes コンテキストとそのための JVM シャットダウンフックを登録します。mergedConfig - アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成 ExceptionSE - コンテキストの読み込みに失敗した場合 SmartContextLoader.loadContext(MergedContextConfiguration), GenericWebApplicationContextprotected void validateMergedContextConfiguration(WebMergedContextConfiguration mergedConfig)
WebMergedContextConfiguration を検証します。デフォルトの実装はノーオペレーションですが、必要に応じてサブクラスによってオーバーライドできます。
mergedConfig - 検証するマージされた構成 IllegalStateExceptionSE - 指定された構成がこのコンテキストローダーに対して有効でない場合 protected GenericWebApplicationContext createContext()
ContextLoader で使用される GenericWebApplicationContext を作成するためのファクトリメソッド。 デフォルトの実装では、デフォルトのコンストラクターを使用して GenericWebApplicationContext を作成します。このメソッドはオーバーライドされる可能性があります。— たとえば、カスタムコンテキストサブクラスを使用したり、カスタム DefaultListableBeanFactory 実装で GenericWebApplicationContext を作成したりします。
GenericWebApplicationContextprotected void configureWebResources(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)
提供された WAC に親がない場合、またはその親が WAC でない場合、提供された WAC はルート WAC として構成されます(以下の「ルート WAC 構成」を参照)。
そうでない場合、提供された WAC のコンテキスト階層がトラバースされて、最上位の WAC(つまり、ルート)が検出されます。ルート WAC の ServletContextEE は、提供された WAC の ServletContext として設定されます。
WebMergedContextConfiguration から取得されます。ResourceLoader は MockServletContext に対してインスタンス化されます。リソースのベースパスの先頭に "classpath:" が付いている場合、DefaultResourceLoader が使用されます。それ以外の場合は、FileSystemResourceLoader が使用されます。MockServletContext は、リソースベースパスとリソースローダーを使用して作成されます。GenericWebApplicationContext は、WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE キーの MockServletContext に格納されます。MockServletContext が WebApplicationContext に設定されます。context - Web リソースを構成する Web アプリケーションコンテキスト webMergedConfig - Web アプリケーションコンテキストの読み込みに使用するマージされたコンテキスト構成 protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory, WebMergedContextConfiguration webMergedConfig)
WebApplicationContext の内部 Bean ファクトリをカスタマイズします。 デフォルトの実装は空ですが、サブクラスでオーバーライドして、DefaultListableBeanFactory の標準設定をカスタマイズできます。
beanFactory - このコンテキストローダーによって作成された Bean ファクトリ webMergedConfig - Web アプリケーションコンテキストの読み込みに使用するマージされたコンテキスト構成 loadContext(MergedContextConfiguration), DefaultListableBeanFactory.setAllowBeanDefinitionOverriding(boolean), DefaultListableBeanFactory.setAllowEagerClassLoading(boolean), AbstractAutowireCapableBeanFactory.setAllowCircularReferences(boolean), AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(boolean)protected abstract void loadBeanDefinitions(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)
WebMergedContextConfiguration の場所またはクラスから、提供された context に Bean 定義をロードします。具象サブクラスは適切な実装を提供する必要があります。
context - Bean 定義をロードする必要があるコンテキスト webMergedConfig - Web アプリケーションコンテキストの読み込みに使用するマージされたコンテキスト構成 loadContext(MergedContextConfiguration)protected void customizeContext(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)
GenericWebApplicationContext をカスタマイズします。 デフォルトの実装は、単に AbstractContextLoader.customizeContext(ConfigurableApplicationContext, MergedContextConfiguration) に委譲するだけです。
context - 新しく作成された Web アプリケーションコンテキスト webMergedConfig - Web アプリケーションコンテキストの読み込みに使用するマージされたコンテキスト構成 loadContext(MergedContextConfiguration), AbstractContextLoader.customizeContext(ConfigurableApplicationContext, MergedContextConfiguration)public final ApplicationContext loadContext(StringSE... locations) throws ExceptionSE
AbstractGenericWebContextLoader は、レガシー ContextLoader ではなく、SmartContextLoader として使用する必要があります。このメソッドはサポートされていません。locations - アプリケーションコンテキストをロードするために使用するリソースの場所 UnsupportedOperationExceptionSE - この実装 ExceptionSE - コンテキストの読み込みに失敗した場合 ContextLoader.loadContext(java.lang.String[])