public abstract class AbstractRefreshableApplicationContext extends AbstractApplicationContext
AbstractApplicationContext.refresh()
への複数の呼び出しをサポートし、毎回新しい内部 Bean ファクトリインスタンスを作成することになっている ApplicationContext
実装の基本クラス。通常(必ずというわけではありませんが)、そのようなコンテキストは、Bean 定義をロードするための構成場所のセットによって駆動されます。 サブクラスによって実装される唯一のメソッドは loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
で、これはリフレッシュのたびに呼び出されます。具体的な実装では、Bean 定義を特定の DefaultListableBeanFactory
にロードし、通常は 1 つ以上の特定の Bean 定義リーダーに委譲することになっています。
WebApplicationContexts にも同様の基本クラスがあることに注意してください。AbstractRefreshableWebApplicationContext
は同じサブクラス化戦略を提供しますが、Web 環境のすべてのコンテキスト機能を事前に実装します。Web コンテキストの構成場所を受信するための事前定義された方法もあります。
この基本クラスの具体的なスタンドアロンサブクラスは、特定の Bean 定義形式で読み取られ、ClassPathXmlApplicationContext
と FileSystemXmlApplicationContext
であり、どちらも共通の AbstractXmlApplicationContext
基本クラスから派生しています。AnnotationConfigApplicationContext
は、Bean 定義のソースとして @Configuration
アノテーション付きクラスをサポートします。
loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
, DefaultListableBeanFactory
, AbstractRefreshableWebApplicationContext
, AbstractXmlApplicationContext
, ClassPathXmlApplicationContext
, FileSystemXmlApplicationContext
, AnnotationConfigApplicationContext
DefaultResourceLoader.ClassPathContextResource
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SHUTDOWN_HOOK_THREAD_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME
FACTORY_BEAN_PREFIX
CLASSPATH_ALL_URL_PREFIX
CLASSPATH_URL_PREFIX
コンストラクターと説明 |
---|
AbstractRefreshableApplicationContext() 親なしで新しい AbstractRefreshableApplicationContext を作成します。 |
AbstractRefreshableApplicationContext(ApplicationContext parent) 指定された親コンテキストで新しい AbstractRefreshableApplicationContext を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected void | assertBeanFactoryActive() 無効にして何もしないようにする: AbstractRefreshableApplicationContext を使用すると、 getBeanFactory() はアクティブコンテキストの強力なアサーションを提供します。 |
protected void | cancelRefresh(BeansException ex) このコンテキストのリフレッシュ試行をキャンセルし、例外がスローされた後に active フラグをリセットします。 |
protected void | closeBeanFactory() サブクラスはこのメソッドを実装して、内部 Bean ファクトリを解放する必要があります。 |
protected DefaultListableBeanFactory | createBeanFactory() このコンテキストの内部 Bean ファクトリを作成します。 |
protected void | customizeBeanFactory(DefaultListableBeanFactory beanFactory) このコンテキストで使用される内部 Bean ファクトリをカスタマイズします。 |
ConfigurableListableBeanFactory | getBeanFactory() サブクラスはここで内部 Bean ファクトリを返す必要があります。 |
protected boolean | hasBeanFactory() このコンテキストが現在 Bean ファクトリを保持しているかどうかを確認します。 |
protected abstract void | loadBeanDefinitions(DefaultListableBeanFactory beanFactory) Bean 定義を特定の Bean ファクトリにロードします。通常、1 つ以上の Bean 定義リーダーに委譲します。 |
protected void | refreshBeanFactory() この実装は、このコンテキストの基礎となる Bean ファクトリの実際のリフレッシュを実行し、以前の Bean ファクトリ(存在する場合)をシャットダウンし、コンテキストのライフサイクルの次のフェーズのために新しい Bean ファクトリを初期化します。 |
void | setAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding) 同じ名前で別の定義を登録し、前者を自動的に置き換えて、Bean 定義をオーバーライドできるようにするかどうかを設定します。 |
void | setAllowCircularReferences(boolean allowCircularReferences) Bean 間の循環参照を許可するかどうかを設定し、自動的に解決しようとします。 |
addApplicationListener, addBeanFactoryPostProcessor, close, containsBean, containsBeanDefinition, containsLocalBean, createEnvironment, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationName, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResourcePatternResolver, getResources, getStartupDate, getType, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, initPropertySources, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, onRefresh, postProcessBeanFactory, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setEnvironment, setId, setParent, start, stop, toString
addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceByPath, getResourceCache, setClassLoader
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
addProtocolResolver
getClassLoader, getResource
public AbstractRefreshableApplicationContext()
public AbstractRefreshableApplicationContext(@Nullable ApplicationContext parent)
parent
- 親コンテキスト public void setAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding)
public void setAllowCircularReferences(boolean allowCircularReferences)
デフォルトは "true" です。これをオフにすると、循環参照が発生したときに例外がスローされ、完全に許可されなくなります。
protected final void refreshBeanFactory() throws BeansException
AbstractApplicationContext
の refreshBeanFactory
BeansException
- Bean ファクトリの初期化が失敗した場合 protected void cancelRefresh(BeansException ex)
AbstractApplicationContext
active
フラグをリセットします。AbstractApplicationContext
の cancelRefresh
ex
- キャンセルに至った例外 protected final void closeBeanFactory()
AbstractApplicationContext
AbstractApplicationContext.close()
によって呼び出されます。例外をスローするべきではなく、シャットダウンの失敗をログに記録します。
AbstractApplicationContext
の closeBeanFactory
protected final boolean hasBeanFactory()
public final ConfigurableListableBeanFactory getBeanFactory()
AbstractApplicationContext
メモ: サブクラスは、内部 Bean ファクトリを返す前に、コンテキストがまだアクティブかどうかを確認する必要があります。コンテキストが閉じられると、内部ファクトリは通常、使用不可と見なされます。
ConfigurableApplicationContext
の getBeanFactory
AbstractApplicationContext
の getBeanFactory
null
)AbstractApplicationContext.refreshBeanFactory()
, AbstractApplicationContext.closeBeanFactory()
protected void assertBeanFactoryActive()
getBeanFactory()
はアクティブコンテキストの強力なアサーションを提供します。AbstractApplicationContext
の assertBeanFactoryActive
protected DefaultListableBeanFactory createBeanFactory()
AbstractApplicationContext.refresh()
の試行ごとに呼び出されます。 デフォルトの実装では、このコンテキストの親の内部 Bean ファクトリを親 Bean ファクトリとして DefaultListableBeanFactory
を作成します。たとえば DefaultListableBeanFactory の設定をカスタマイズするために、サブクラスでオーバーライドできます。
DefaultListableBeanFactory.setAllowBeanDefinitionOverriding(boolean)
, DefaultListableBeanFactory.setAllowEagerClassLoading(boolean)
, AbstractAutowireCapableBeanFactory.setAllowCircularReferences(boolean)
, AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(boolean)
protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory)
AbstractApplicationContext.refresh()
の試行ごとに呼び出されます。 デフォルトの実装は、指定されている場合、このコンテキストの "allowBeanDefinitionOverriding" および "allowCircularReferences" 設定を適用します。DefaultListableBeanFactory
の設定をカスタマイズするためにサブクラスでオーバーライドできます。
beanFactory
- このコンテキスト用に新しく作成された Bean ファクトリ DefaultListableBeanFactory.setAllowBeanDefinitionOverriding(boolean)
, AbstractAutowireCapableBeanFactory.setAllowCircularReferences(boolean)
, AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(boolean)
, DefaultListableBeanFactory.setAllowEagerClassLoading(boolean)
protected abstract void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws BeansException, IOExceptionSE
beanFactory
- Bean 定義をロードする Bean ファクトリ BeansException
- Bean 定義の解析が失敗した場合 IOExceptionSE
- Bean 定義ファイルのロードが失敗した場合 PropertiesBeanDefinitionReader
, XmlBeanDefinitionReader