public class AnnotationConfigWebApplicationContext extends AbstractRefreshableWebApplicationContext implements AnnotationConfigRegistry
WebApplicationContext
実装 - 特に @Configuration
アノテーション付きクラスだけでなく、プレーンな @Component
クラスおよび javax.inject
アノテーションを使用する JSR-330 準拠クラスも受け入れます。クラスを 1 つずつ登録する (構成場所としてクラス名を指定する) こと、およびクラスパススキャン (基本パッケージを構成場所として指定する) を可能にします。 これは、本質的に Web 環境の AnnotationConfigApplicationContext
と同等です。
このアプリケーションコンテキストを使用するには、ContextLoader の "contextClass" コンテキストパラメーターおよび / または FrameworkServlet の "contextClass" 初期化パラメーターを、このクラスの完全修飾名に設定する必要があります。
Spring 3.1 の時点で、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
定義は、以前にロードされたファイルで定義されたものをオーバーライドします。これを活用して、追加の構成クラスを介して特定の Bean 定義を意図的にオーバーライドできます。
AnnotationConfigApplicationContext
DefaultResourceLoader.ClassPathContextResource
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME
FACTORY_BEAN_PREFIX
CLASSPATH_ALL_URL_PREFIX
CLASSPATH_URL_PREFIX
コンストラクターと説明 |
---|
AnnotationConfigWebApplicationContext() |
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContext
afterPropertiesSet, getDefaultConfigLocations, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
addApplicationListener, addBeanFactoryPostProcessor, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, 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, getResources, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setEnvironment, setParent, start, stop, toString
addProtocolResolver, getClassLoader, getProtocolResolvers, getResource, setClassLoader
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
setConfigLocation, setConfigLocations
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, setEnvironment, setId, setParent
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
containsLocalBean, getParentBeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
getMessage, getMessage, getMessage
publishEvent, publishEvent
getResources
getClassLoader, getResource
public void setBeanNameGenerator(BeanNameGenerator beanNameGenerator)
AnnotatedBeanDefinitionReader
および / または ClassPathBeanDefinitionScanner
で使用するカスタム BeanNameGenerator
を設定します。 デフォルトは AnnotationBeanNameGenerator
です。
protected BeanNameGenerator getBeanNameGenerator()
AnnotatedBeanDefinitionReader
および / または ClassPathBeanDefinitionScanner
で使用するカスタム BeanNameGenerator
を返します(ある場合)。public void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
AnnotatedBeanDefinitionReader
および / または ClassPathBeanDefinitionScanner
で使用するカスタム ScopeMetadataResolver
を設定します。 デフォルトは AnnotationScopeMetadataResolver
です。
protected ScopeMetadataResolver getScopeMetadataResolver()
AnnotatedBeanDefinitionReader
および / または ClassPathBeanDefinitionScanner
で使用するカスタム ScopeMetadataResolver
を返します(ある場合)。public void register(ClassSE<?>... annotatedClasses)
コンテキストで新しいクラスを完全に処理するには、AbstractApplicationContext.refresh()
を呼び出す必要があることに注意してください。
AnnotationConfigRegistry
の register
annotatedClasses
- 1 つまたは複数のアノテーション付きクラス、たとえば @Configuration
クラス scan(String...)
, loadBeanDefinitions(DefaultListableBeanFactory)
, AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
, AbstractApplicationContext.refresh()
public void scan(StringSE... basePackages)
コンテキストで新しいクラスを完全に処理するには、AbstractApplicationContext.refresh()
を呼び出す必要があることに注意してください。
AnnotationConfigRegistry
の scan
basePackages
- アノテーション付きクラスを確認するパッケージ loadBeanDefinitions(DefaultListableBeanFactory)
, register(Class...)
, AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
, AbstractApplicationContext.refresh()
protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
register(Class...)
で指定されたクラスの BeanDefinition
を登録し、scan(String...)
で指定されたパッケージをスキャンします。AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
または AbstractRefreshableConfigApplicationContext.setConfigLocations(String[])
で指定された値の場合、クラスのロードが成功した場合はクラスごとに各ロケーションをロードし、BeanDefinition
を登録し、クラスのロードが失敗した場合(つまり ClassNotFoundException
が発生した場合)、値がパッケージであると想定し、アノテーション付きのクラスをスキャンします。
@Autowired
、@Required
、関連するアノテーションを使用できるように、アノテーション構成ポストプロセッサーのデフォルトセットを有効にします。
value
属性がステレオタイプアノテーションに提供されない限り、構成クラス Bean 定義は、生成された Bean 定義名で登録されます。
AbstractRefreshableApplicationContext
の loadBeanDefinitions
beanFactory
- Bean 定義をロードする Bean ファクトリ register(Class...)
, scan(String...)
, AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
, AbstractRefreshableConfigApplicationContext.setConfigLocations(String[])
, AnnotatedBeanDefinitionReader
, ClassPathBeanDefinitionScanner
protected AnnotatedBeanDefinitionReader getAnnotatedBeanDefinitionReader(DefaultListableBeanFactory beanFactory)
AnnotatedBeanDefinitionReader
を構築します。 これは、Environment
(必要な場合)で事前に構成する必要がありますが、BeanNameGenerator
または ScopeMetadataResolver
ではまだ構成しないでください。
beanFactory
- Bean 定義をロードする Bean ファクトリ AbstractApplicationContext.getEnvironment()
, getBeanNameGenerator()
, getScopeMetadataResolver()
protected ClassPathBeanDefinitionScanner getClassPathBeanDefinitionScanner(DefaultListableBeanFactory beanFactory)
ClassPathBeanDefinitionScanner
を構築します。 これは、Environment
(必要な場合)で事前に構成する必要がありますが、BeanNameGenerator
または ScopeMetadataResolver
ではまだ構成しないでください。
beanFactory
- Bean 定義をロードする Bean ファクトリ AbstractApplicationContext.getEnvironment()
, getBeanNameGenerator()
, getScopeMetadataResolver()