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
, PropertiesBeanDefinitionReader
DefaultResourceLoader.ClassPathContextResource
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
APPLICATION_STARTUP_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
コンストラクターと説明 |
---|
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, ObjectSE... constructorArgs) 指定された 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, ObjectSE... constructorArgs) 指定された 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 | setApplicationStartup(ApplicationStartup applicationStartup) このアプリケーションコンテキストに ApplicationStartup を設定します。 |
void | setClassLoader(ClassLoaderSE classLoader) クラスパスリソースをロードする ClassLoader、または実際のリソースアクセス時にスレッドコンテキストクラスローダーを使用するための null を指定します。 |
void | setParent(ApplicationContext parent) このアプリケーションコンテキストの親を設定し、それに応じて内部 BeanFactory の親も設定します。 |
void | setResourceLoader(ResourceLoader resourceLoader) このコンテキストに使用する ResourceLoader を設定します。 |
addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, createEnvironment, destroy, destroyBeans, doClose, findAnnotationOnBean, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationName, getApplicationStartup, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResourcePatternResolver, 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, start, stop, toString
addProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceByPath, getResourceCache
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames
getAliases
addProtocolResolver
public 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 setApplicationStartup(ApplicationStartup applicationStartup)
ConfigurableApplicationContext
ApplicationStartup
を設定します。これにより、アプリケーションコンテキストは起動時にメトリクスを記録できます。
ConfigurableApplicationContext
の setApplicationStartup
AbstractApplicationContext
の setApplicationStartup
applicationStartup
- 新しいコンテキストイベントファクトリ public 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
- リソースの場所 Resource
ハンドル (非 null
)setResourceLoader(org.springframework.core.io.ResourceLoader)
public Resource[] getResources(StringSE locationPattern) throws IOExceptionSE
ResourcePatternResolver
の getResources
AbstractApplicationContext
の getResources
locationPattern
- 解決する位置パターン Resource
オブジェクト IOExceptionSE
- I/O エラーの場合 setResourceLoader(org.springframework.core.io.ResourceLoader)
public void setClassLoader(@Nullable ClassLoaderSE classLoader)
DefaultResourceLoader
null
を指定します。デフォルトでは、ClassLoader アクセスは、実際のリソースアクセス時にスレッドコンテキストクラスローダーを使用して行われます(5.3 以降)。
@Nullable public ClassLoaderSE getClassLoader()
DefaultResourceLoader
このリソースローダーによって作成されたすべての ClassPathResource オブジェクトの ClassPathResource のコンストラクターに渡されます。
ResourceLoader
の getClassLoader
DefaultResourceLoader
の getClassLoader
ClassLoader
(システム ClassLoader
にさえアクセスできない場合は、null
のみ)ClassPathResource
protected final void refreshBeanFactory() throws IllegalStateExceptionSE
AbstractApplicationContext
の refreshBeanFactory
IllegalStateExceptionSE
- すでに初期化されていて、複数回のリフレッシュ試行がサポートされていない場合 registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition)
protected void cancelRefresh(BeansException ex)
AbstractApplicationContext
active
フラグをリセットします。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
AbstractApplicationContext
ApplicationContext
の getAutowireCapableBeanFactory
AbstractApplicationContext
の getAutowireCapableBeanFactory
IllegalStateExceptionSE
- コンテキストが AutowireCapableBeanFactory
インターフェースをサポートしていない場合、またはオートワイヤー可能な Bean ファクトリをまだ保持していない場合(たとえば、refresh()
が呼び出されたことがない場合)、コンテキストがすでに閉じられている場合 AbstractApplicationContext.getBeanFactory()
public void registerBeanDefinition(StringSE beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException
BeanDefinitionRegistry
BeanDefinitionRegistry
の registerBeanDefinition
beanName
- 登録する Bean インスタンスの名前 beanDefinition
- 登録する Bean インスタンスの定義 BeanDefinitionStoreException
- BeanDefinition が無効な場合 BeanDefinitionOverrideException
- 指定された Bean 名の BeanDefinition がすでに存在し、それをオーバーライドすることが許可されていない場合 GenericBeanDefinition
, RootBeanDefinition
, ChildBeanDefinition
public void removeBeanDefinition(StringSE beanName) throws NoSuchBeanDefinitionException
BeanDefinitionRegistry
BeanDefinitionRegistry
の removeBeanDefinition
beanName
- 登録する Bean インスタンスの名前 NoSuchBeanDefinitionException
- そのような Bean 定義がない場合 public BeanDefinition getBeanDefinition(StringSE beanName) throws NoSuchBeanDefinitionException
BeanDefinitionRegistry
BeanDefinitionRegistry
の getBeanDefinition
beanName
- 定義を検索する Bean の名前 null
)NoSuchBeanDefinitionException
- そのような Bean 定義がない場合 public boolean isBeanNameInUse(StringSE beanName)
BeanDefinitionRegistry
BeanDefinitionRegistry
の isBeanNameInUse
beanName
- チェックする名前 public void registerAlias(StringSE beanName, StringSE alias)
AliasRegistry
AliasRegistry
の registerAlias
beanName
- 正規名 alias
- 登録されるエイリアス public void removeAlias(StringSE alias)
AliasRegistry
AliasRegistry
の removeAlias
alias
- 削除するエイリアス public boolean isAlias(StringSE beanName)
AliasRegistry
AliasRegistry
の isAlias
beanName
- チェックする名前 public <T> void registerBean(ClassSE<T> beanClass, ObjectSE... constructorArgs)
beanClass
- Bean のクラス constructorArgs
- Spring のコンストラクター解決アルゴリズムにフィードされるカスタム引数値。すべての引数または特定の引数のみを解決し、残りは通常のオートワイヤーによって解決されます (null
または空の場合があります)public <T> void registerBean(@Nullable StringSE beanName, ClassSE<T> beanClass, ObjectSE... constructorArgs)
beanName
- Bean の名前 (null
の場合があります)beanClass
- Bean のクラス constructorArgs
- Spring のコンストラクター解決アルゴリズムにフィードされるカスタム引数値。すべての引数または特定の引数のみを解決し、残りは通常のオートワイヤーによって解決されます (null
または空の場合があります)public final <T> void registerBean(ClassSE<T> beanClass, BeanDefinitionCustomizer... customizers)
beanClass
- Bean のクラス (自動接続される public コンストラクターを解決します。おそらくデフォルトのコンストラクターだけです)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 のクラス (自動接続される public コンストラクターを解決します。おそらくデフォルトのコンストラクターだけです)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 のクラス supplier
- Bean のインスタンスを作成するためのコールバック (null
の場合、public コンストラクターを解決して代わりにオートワイヤーする)customizers
- ファクトリの BeanDefinition
をカスタマイズするための 1 つ以上のコールバック。lazy-init またはプライマリフラグの設定