クラス AnnotationConfigWebApplicationContext

実装されたすべてのインターフェース:
CloseableSEAutoCloseableSEAwareBeanFactoryBeanNameAwareHierarchicalBeanFactoryInitializingBeanListableBeanFactoryAnnotationConfigRegistryApplicationContextApplicationEventPublisherConfigurableApplicationContextLifecycleMessageSourceEnvironmentCapableResourceLoaderResourcePatternResolverThemeSourceConfigurableWebApplicationContextWebApplicationContext

public class AnnotationConfigWebApplicationContext extends AbstractRefreshableWebApplicationContext implements AnnotationConfigRegistry
コンポーネントクラスを入力として受け入れる WebApplicationContext 実装 — 特に @Configuration クラスだけでなく、プレーンな @Component クラス、jakarta.inject アノテーションを使用する JSR-330 準拠のクラス。

クラスを 1 つずつ登録する(構成の場所としてクラス名を指定する)だけでなく、クラスパススキャン(構成の場所として基本パッケージを指定する)を介して登録することもできます。

これは基本的に、Web 環境の AnnotationConfigApplicationContext と同等です。ただし、AnnotationConfigApplicationContext とは対照的に、このクラスは GenericApplicationContext を継承しないため、GenericApplicationContext で使用できる便利な registerBean(...) メソッドの一部を提供しません。Web 環境でアノテーション付きコンポーネントクラスを GenericApplicationContext に登録する場合は、AnnotatedBeanDefinitionReader で GenericWebApplicationContext を使用できます。詳細と例については、GenericWebApplicationContext の Javadoc を参照してください。

このアプリケーションコンテキストを使用するには、ContextLoader の "contextClass" context-param および / または FrameworkServlet の "contextClass" init-param をこのクラスの完全修飾名に設定する必要があります。

web.xml に代わる WebApplicationInitializer コードベースの代替を使用する場合、このクラスは直接インスタンス化され、Spring の DispatcherServlet または ContextLoaderListener に挿入されることもあります。詳細と使用例については、Javadoc を参照してください。

XmlWebApplicationContext とは異なり、デフォルトの構成クラスの場所は想定されていません。むしろ、ContextLoader の場合は "contextConfigLocation" context-param を、FrameworkServlet の場合は "contextConfigLocation" init-param を設定する必要があります。param-value には、コンポーネントをスキャンするための完全修飾クラス名とベースパッケージの両方を含めることができます。これらの場所の処理方法の詳細については、loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory) を参照してください。

"contextConfigLocation" パラメーターを設定する代わりに、ユーザーは ApplicationContextInitializer を実装し、 "contextInitializerClasses" context-param/init-param を設定できます。このような場合、ユーザーは AbstractRefreshableConfigApplicationContext.setConfigLocation(String) メソッドよりも AbstractApplicationContext.refresh() および scan(String...) メソッドを優先する必要があります。これは、主に ContextLoader で使用するためのものです。

メモ: 複数の @Configuration クラスの場合、後の @Bean 定義は、以前にロードされたファイルで定義されたものをオーバーライドします。これを利用して、追加の @Configuration クラスを介して特定の Bean 定義を意図的にオーバーライドできます。

導入:
3.0
作成者:
Chris Beams, Juergen Hoeller, Sam Brannen
関連事項: