クラス 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" コンテキストパラメーターおよび / または FrameworkServlet の "contextClass" 初期化パラメーターを、このクラスの完全修飾名に設定する必要があります。

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

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

"contextConfigLocation" パラメーターを設定する代わりに、ユーザーは ApplicationContextInitializer を実装し、"contextInitializerClasses" コンテキストパラメーター / 初期化パラメーターを設定できます。このような場合、ユーザーは、主に ContextLoader で使用される AbstractRefreshableConfigApplicationContext.setConfigLocation(String) メソッドよりも、AbstractApplicationContext.refresh() メソッドと scan(String...) メソッドを優先する必要があります。

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

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