public class GenericApplicationContext extends AbstractApplicationContext implements BeanDefinitionRegistry
DefaultListableBeanFactory インスタンスを保持し、特定の Bean 定義フォーマットを想定しない汎用 ApplicationContext 実装。Bean 定義リーダーを適用できるようにするために、BeanDefinitionRegistry インターフェースを実装します。 一般的な使用箇所は、BeanDefinitionRegistry インターフェースを介してさまざまな Bean 定義を登録し、AbstractApplicationContext.refresh() を呼び出して、アプリケーションコンテキストセマンティクス(ApplicationContextAware の処理、BeanFactoryPostProcessors の自動検出など)でそれらの Bean を初期化することです。
リフレッシュごとに新しい内部 BeanFactory インスタンスを作成する他の ApplicationContext 実装とは対照的に、このコンテキストの内部 BeanFactory は、その上で Bean 定義を登録できるように、最初から利用可能です。AbstractApplicationContext.refresh() は一度しか呼び出せません。
使用例:
GenericApplicationContext ctx = new GenericApplicationContext();
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
xmlReader.loadBeanDefinitions(new ClassPathResource("applicationContext.xml"));
PropertiesBeanDefinitionReader propReader = new PropertiesBeanDefinitionReader(ctx);
propReader.loadBeanDefinitions(new ClassPathResource("otherBeans.properties"));
ctx.refresh();
MyBean myBean = (MyBean) ctx.getBean("myBean");
...XML Bean 定義の典型的なケースでは、単に ClassPathXmlApplicationContext または FileSystemXmlApplicationContext を使用します。これらはセットアップが容易ですが、任意の Bean 定義フォーマットを混合するのではなく、XML Bean 定義に標準リソースの場所を使用できるため、柔軟性が低くなります。Web 環境で同等のものは XmlWebApplicationContext です。 リフレッシュ可能な方法で特別な Bean 定義形式を読み取ることになっているカスタムアプリケーションコンテキスト実装の場合、AbstractRefreshableApplicationContext 基本クラスから派生することを検討してください。
registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition), AbstractApplicationContext.refresh(), XmlBeanDefinitionReader, PropertiesBeanDefinitionReaderDefaultResourceLoader.ClassPathContextResourceAPPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAMECONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAMEFACTORY_BEAN_PREFIXCLASSPATH_ALL_URL_PREFIXCLASSPATH_URL_PREFIX| コンストラクターと説明 |
|---|
GenericApplicationContext() 新しい GenericApplicationContext を作成します。 |
GenericApplicationContext(ApplicationContext parent) 指定された親を持つ新しい GenericApplicationContext を作成します。 |
GenericApplicationContext(DefaultListableBeanFactory beanFactory) 指定された DefaultListableBeanFactory で新しい GenericApplicationContext を作成します。 |
GenericApplicationContext(DefaultListableBeanFactory beanFactory, ApplicationContext parent) 指定された DefaultListableBeanFactory で新しい GenericApplicationContext を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected void | cancelRefresh(BeansException ex) このコンテキストのリフレッシュ試行をキャンセルし、例外がスローされた後に active フラグをリセットします。 |
protected void | closeBeanFactory() やることはあまりない: リリースされない単一の内部 BeanFactory を保持しています。 |
AutowireCapableBeanFactory | getAutowireCapableBeanFactory() すでに利用可能な場合、このコンテキストの内部 Bean ファクトリを AutowireCapableBeanFactory として返します。 |
BeanDefinition | getBeanDefinition(StringSE beanName) 指定された Bean 名の BeanDefinition を返します。 |
ConfigurableListableBeanFactory | getBeanFactory() このコンテキストが保持する単一の内部 BeanFactory を(ConfigurableListableBeanFactory として)返します。 |
ClassLoaderSE | getClassLoader() クラスパスリソースをロードする ClassLoader を返します。 |
DefaultListableBeanFactory | getDefaultListableBeanFactory()Bean 定義の登録に使用できる、このコンテキストの基になる Bean ファクトリを返します。 |
Resource | getResource(StringSE location) この実装は、設定されている場合はこのコンテキストの ResourceLoader に委譲し、それ以外はデフォルトのスーパークラスの動作にフォールバックします。 |
Resource[] | getResources(StringSE locationPattern) この実装は、ResourcePatternResolver インターフェースを実装する場合、このコンテキストの ResourceLoader に委譲し、それ以外の場合はデフォルトのスーパークラスの動作にフォールバックします。 |
boolean | isAlias(StringSE beanName) この特定の名前がエイリアスとして定義されているかどうかを判断します(実際に登録されたコンポーネントの名前ではありません)。 |
boolean | isBeanNameInUse(StringSE beanName) 指定された Bean 名がこのレジストリ内ですでに使用されているかどうか、つまり |
protected void | refreshBeanFactory() 何もしない: 単一の内部 BeanFactory を保持し、public メソッド(または BeanFactory's)を通じて Bean を登録するために呼び出し元に依存しています。 |
void | registerAlias(StringSE beanName, StringSE alias) 名前を指定して、そのエイリアスを登録します。 |
<T> void | registerBean(ClassSE<T> beanClass, BeanDefinitionCustomizer... customizers) 指定された Bean クラスから Bean を登録し、オプションでその Bean 定義メタデータをカスタマイズします(通常はラムダ式またはメソッド参照として宣言されます)。 |
<T> void | registerBean(ClassSE<T> beanClass, SupplierSE<T> supplier, BeanDefinitionCustomizer... customizers) 新しいインスタンス(通常はラムダ式またはメソッド参照として宣言)を取得するために指定されたサプライヤーを使用して、指定された Bean クラスから Bean を登録し、オプションでその Bean 定義メタデータをカスタマイズします(これも通常、ラムダ式またはメソッド参照として宣言されます)。 |
<T> void | registerBean(StringSE beanName, ClassSE<T> beanClass, BeanDefinitionCustomizer... customizers) 新しいインスタンス(通常はラムダ式またはメソッド参照として宣言)を取得するために指定されたサプライヤーを使用して、指定された Bean クラスから Bean を登録し、オプションでその Bean 定義メタデータをカスタマイズします(これも通常、ラムダ式またはメソッド参照として宣言されます)。 |
<T> void | registerBean(StringSE beanName, ClassSE<T> beanClass, SupplierSE<T> supplier, BeanDefinitionCustomizer... customizers) 新しいインスタンス(通常はラムダ式またはメソッド参照として宣言)を取得するために指定されたサプライヤーを使用して、指定された Bean クラスから Bean を登録し、オプションでその Bean 定義メタデータをカスタマイズします(これも通常、ラムダ式またはメソッド参照として宣言されます)。 |
void | registerBeanDefinition(StringSE beanName, BeanDefinition beanDefinition) このレジストリに新しい Bean 定義を登録します。 |
void | removeAlias(StringSE alias) このレジストリから指定されたエイリアスを削除します。 |
void | removeBeanDefinition(StringSE beanName) 指定された名前の BeanDefinition を削除します。 |
void | setAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding) 同じ名前で別の定義を登録し、前者を自動的に置き換えて、Bean 定義をオーバーライドできるようにするかどうかを設定します。 |
void | setAllowCircularReferences(boolean allowCircularReferences)Bean 間の循環参照を許可するかどうかを設定し、自動的に解決しようとします。 |
void | setClassLoader(ClassLoaderSE classLoader) クラスパスリソースをロードする ClassLoader、または実際のリソースアクセス時にスレッドコンテキストクラスローダーを使用するための null を指定します。 |
void | setId(StringSE id) このアプリケーションコンテキストの一意の ID を設定します。 |
void | setParent(ApplicationContext parent) このアプリケーションコンテキストの親を設定し、それに応じて内部 BeanFactory の親も設定します。 |
void | setResourceLoader(ResourceLoader resourceLoader) このコンテキストに使用する ResourceLoader を設定します。 |
addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, createEnvironment, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationName, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResourcePatternResolver, getStartupDate, 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, start, stop, toStringaddProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceByPath, getResourceCachecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSEcontainsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNamesgetAliasesaddProtocolResolverpublic GenericApplicationContext()
public GenericApplicationContext(DefaultListableBeanFactory beanFactory)
beanFactory - このコンテキストに使用する DefaultListableBeanFactory インスタンス registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition), AbstractApplicationContext.refresh()public GenericApplicationContext(@Nullable ApplicationContext parent)
parent - 親アプリケーションのコンテキスト registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition), AbstractApplicationContext.refresh()public GenericApplicationContext(DefaultListableBeanFactory beanFactory, ApplicationContext parent)
beanFactory - このコンテキストに使用する DefaultListableBeanFactory インスタンス parent - 親アプリケーションのコンテキスト registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition), AbstractApplicationContext.refresh()public void setParent(@Nullable ApplicationContext parent)
ConfigurableApplicationContext の setParent AbstractApplicationContext の setParent parent - 親コンテキスト ConfigurableBeanFactory.setParentBeanFactory(org.springframework.beans.factory.BeanFactory)public void setId(StringSE id)
AbstractApplicationContextデフォルトは、コンテキストインスタンスのオブジェクト ID、またはコンテキスト自体が Bean として定義されている場合はコンテキスト Bean の名前です。
ConfigurableApplicationContext の setId AbstractApplicationContext の setId id - コンテキストの一意の IDpublic void setAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding)
public void setAllowCircularReferences(boolean allowCircularReferences)
デフォルトは "true" です。これをオフにすると、循環参照が発生したときに例外がスローされ、完全に許可されなくなります。
public void setResourceLoader(ResourceLoader resourceLoader)
getResource 呼び出しを指定された ResourceLoader に委譲します。設定されていない場合、デフォルトのリソース読み込みが適用されます。カスタム ResourceLoader を指定する主な理由は、特定のメソッドでリソースパス(URL 接頭辞なし)を解決するためです。デフォルトの動作では、クラスパスの場所などのパスを解決します。リソースパスをファイルシステムの場所として解決するには、ここで FileSystemResourceLoader を指定します。
完全な ResourcePatternResolver を渡すこともできます。これはコンテキストによって自動検出され、getResources 呼び出しにも使用されます。そうでない場合は、デフォルトのリソースパターンマッチングが適用されます。
public Resource getResource(StringSE location)
ResourceLoader の getResource DefaultResourceLoader の getResource location - リソースの場所 null)setResourceLoader(org.springframework.core.io.ResourceLoader)public Resource[] getResources(StringSE locationPattern) throws IOExceptionSE
ResourcePatternResolver の getResources AbstractApplicationContext の getResources locationPattern - 解決する位置パターン IOExceptionSE - I/O エラーの場合 setResourceLoader(org.springframework.core.io.ResourceLoader)public void setClassLoader(@Nullable ClassLoaderSE classLoader)
DefaultResourceLoadernull を指定します。デフォルトでは、ClassLoader アクセスは、この ResourceLoader の初期化時にスレッドコンテキストクラスローダーを使用して行われます。
DefaultResourceLoader の setClassLoader @Nullable public ClassLoaderSE getClassLoader()
DefaultResourceLoaderこのリソースローダーによって作成されたすべての ClassPathResource オブジェクトの ClassPathResource のコンストラクターに渡されます。
ResourceLoader の getClassLoader DefaultResourceLoader の getClassLoader ClassPathResourceprotected final void refreshBeanFactory()
throws IllegalStateExceptionSEAbstractApplicationContext の refreshBeanFactory IllegalStateExceptionSE - すでに初期化されていて、複数回のリフレッシュ試行がサポートされていない場合 registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition)protected void cancelRefresh(BeansException ex)
AbstractApplicationContextactive フラグをリセットします。AbstractApplicationContext の cancelRefresh ex - キャンセルに至った例外 protected final void closeBeanFactory()
AbstractApplicationContext の closeBeanFactory public final ConfigurableListableBeanFactory getBeanFactory()
ConfigurableApplicationContext の getBeanFactory AbstractApplicationContext の getBeanFactory null)AbstractApplicationContext.refreshBeanFactory(), AbstractApplicationContext.closeBeanFactory()public final DefaultListableBeanFactory getDefaultListableBeanFactory()
注意 : Bean ファクトリとそれに含まれる Bean をアプリケーションコンテキストセマンティクス(BeanFactoryPostProcessors の自動検出など)で初期化するには、AbstractApplicationContext.refresh() を呼び出す必要があります。
public AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateExceptionSE
AbstractApplicationContextApplicationContext の getAutowireCapableBeanFactory AbstractApplicationContext の getAutowireCapableBeanFactory IllegalStateExceptionSE - コンテキストが AutowireCapableBeanFactory インターフェースをサポートしていない場合、またはオートワイヤー可能な Bean ファクトリをまだ保持していない場合(たとえば、refresh() が呼び出されたことがない場合)、コンテキストがすでに閉じられている場合 AbstractApplicationContext.getBeanFactory()public void registerBeanDefinition(StringSE beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException
BeanDefinitionRegistryBeanDefinitionRegistry の registerBeanDefinition beanName - 登録する Bean インスタンスの名前 beanDefinition - 登録する Bean インスタンスの定義 BeanDefinitionStoreException - BeanDefinition が無効である場合、または指定された Bean 名の BeanDefinition がすでに存在する場合 (それを上書きすることはできません)RootBeanDefinition, ChildBeanDefinitionpublic void removeBeanDefinition(StringSE beanName) throws NoSuchBeanDefinitionException
BeanDefinitionRegistryBeanDefinitionRegistry の removeBeanDefinition beanName - 登録する Bean インスタンスの名前 NoSuchBeanDefinitionException - そのような Bean 定義がない場合 public BeanDefinition getBeanDefinition(StringSE beanName) throws NoSuchBeanDefinitionException
BeanDefinitionRegistryBeanDefinitionRegistry の getBeanDefinition beanName - 定義を検索する Bean の名前 null)NoSuchBeanDefinitionException - そのような Bean 定義がない場合 public boolean isBeanNameInUse(StringSE beanName)
BeanDefinitionRegistryBeanDefinitionRegistry の isBeanNameInUse beanName - チェックする名前 public void registerAlias(StringSE beanName, StringSE alias)
AliasRegistryAliasRegistry の registerAlias beanName - 正規名 alias - 登録されるエイリアス public void removeAlias(StringSE alias)
AliasRegistryAliasRegistry の removeAlias alias - 削除するエイリアス public boolean isAlias(StringSE beanName)
AliasRegistryAliasRegistry の isAlias beanName - チェックする名前 public final <T> void registerBean(ClassSE<T> beanClass, BeanDefinitionCustomizer... customizers)
beanClass - Bean のクラス customizers - ファクトリの BeanDefinition をカスタマイズするための 1 つ以上のコールバック。lazy-init またはプライマリフラグの設定 registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)public final <T> void registerBean(@Nullable StringSE beanName, ClassSE<T> beanClass, BeanDefinitionCustomizer... customizers)
beanName - Bean の名前 (null の場合があります)beanClass - Bean のクラス customizers - ファクトリの BeanDefinition をカスタマイズするための 1 つ以上のコールバック。lazy-init またはプライマリフラグの設定 registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)public final <T> void registerBean(ClassSE<T> beanClass, SupplierSE<T> supplier, BeanDefinitionCustomizer... customizers)
beanClass - Bean のクラス supplier - Bean のインスタンスを作成するためのコールバック customizers - ファクトリの BeanDefinition をカスタマイズするための 1 つ以上のコールバック。lazy-init またはプライマリフラグの設定 registerBean(String, Class, Supplier, BeanDefinitionCustomizer...)public <T> void registerBean(@Nullable StringSE beanName, ClassSE<T> beanClass, @Nullable SupplierSE<T> supplier, BeanDefinitionCustomizer... customizers)
このメソッドをオーバーライドして、すべての registerBean メソッドに登録メカニズムを適合させることができます(これらはすべてこのメソッドに委譲されるため)。
beanName - Bean の名前 (null の場合があります)beanClass - Bean のクラス (名前が指定されている場合、null になる場合があります)supplier - Bean のインスタンスを作成するためのコールバック customizers - ファクトリの BeanDefinition をカスタマイズするための 1 つ以上のコールバック。lazy-init またはプライマリフラグの設定