类 AnnotationConfigWebApplicationContext
- java.lang.Object
- org.springframework.core.io.DefaultResourceLoader
- org.springframework.context.support.AbstractApplicationContext
- org.springframework.context.support.AbstractRefreshableApplicationContext
- org.springframework.context.support.AbstractRefreshableConfigApplicationContext
- org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
- org.springframework.web.context.support.AnnotationConfigWebApplicationContext
- 所有已实现的接口:
Closeable
,AutoCloseable
,Aware
,BeanFactory
,BeanNameAware
,HierarchicalBeanFactory
,InitializingBean
,ListableBeanFactory
,AnnotationConfigRegistry
,ApplicationContext
,ApplicationEventPublisher
,ConfigurableApplicationContext
,Lifecycle
,MessageSource
,EnvironmentCapable
,ResourceLoader
,ResourcePatternResolver
,ThemeSource
,ConfigurableWebApplicationContext
,WebApplicationContext
public class AnnotationConfigWebApplicationContext extends AbstractRefreshableWebApplicationContext implements AnnotationConfigRegistry
WebApplicationContext
implementation which accepts component classes as input — in particular@Configuration
-annotated classes, but also plain@Component
classes and JSR-330 compliant classes usingjavax.inject
annotations.Allows for registering classes one by one (specifying class names as config location) as well as for classpath scanning (specifying base packages as config location).
This is essentially the equivalent of
AnnotationConfigApplicationContext
for a web environment.To make use of this application context, the "contextClass" context-param for ContextLoader and/or "contextClass" init-param for FrameworkServlet must be set to the fully-qualified name of this class.
As of Spring 3.1, this class may also be directly instantiated and injected into Spring's
DispatcherServlet
orContextLoaderListener
when using theWebApplicationInitializer
code-based alternative toweb.xml
. See its Javadoc for details and usage examples.Unlike
XmlWebApplicationContext
, no default configuration class locations are assumed. Rather, it is a requirement to set the "contextConfigLocation" context-param forContextLoader
and/or "contextConfigLocation" init-param for FrameworkServlet. The param-value may contain both fully-qualified class names and base packages to scan for components. SeeloadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
for exact details on how these locations are processed.As an alternative to setting the "contextConfigLocation" parameter, users may implement an
ApplicationContextInitializer
and set the "contextInitializerClasses" context-param / init-param. In such cases, users should favor theAbstractApplicationContext.refresh()
andscan(String...)
methods over theAbstractRefreshableConfigApplicationContext.setConfigLocation(String)
method, which is primarily for use byContextLoader
.Note: In case of multiple
@Configuration
classes, later@Bean
definitions will override ones defined in earlier loaded files. This can be leveraged to deliberately override certain bean definitions via an extra@Configuration
class.- 从以下版本开始:
- 3.0
- 作者:
- Chris Beams, Juergen Hoeller
- 另请参阅:
AnnotationConfigApplicationContext
嵌套类概要
从类继承的嵌套类/接口 org.springframework.core.io.DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource
字段概要
从类继承的字段 org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
从接口继承的字段 org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
从接口继承的字段 org.springframework.context.ConfigurableApplicationContext
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
从接口继承的字段 org.springframework.web.context.ConfigurableWebApplicationContext
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
从接口继承的字段 org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX
从接口继承的字段 org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIX
从接口继承的字段 org.springframework.web.context.WebApplicationContext
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
构造器概要
构造器 构造器 说明 AnnotationConfigWebApplicationContext()
方法概要
从类继承的方法 org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContext
从类继承的方法 org.springframework.context.support.AbstractRefreshableConfigApplicationContext
afterPropertiesSet, getDefaultConfigLocations, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
从类继承的方法 org.springframework.context.support.AbstractRefreshableApplicationContext
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
从类继承的方法 org.springframework.context.support.AbstractApplicationContext
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, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, 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
从类继承的方法 org.springframework.core.io.DefaultResourceLoader
addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceCache, setClassLoader
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
从接口继承的方法 org.springframework.context.ApplicationContext
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
从接口继承的方法 org.springframework.context.ApplicationEventPublisher
publishEvent, publishEvent
从接口继承的方法 org.springframework.beans.factory.BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
从接口继承的方法 org.springframework.context.ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, setClassLoader, setEnvironment, setId, setParent
从接口继承的方法 org.springframework.web.context.ConfigurableWebApplicationContext
setConfigLocation, setConfigLocations
从接口继承的方法 org.springframework.beans.factory.HierarchicalBeanFactory
containsLocalBean, getParentBeanFactory
从接口继承的方法 org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
从接口继承的方法 org.springframework.context.MessageSource
getMessage, getMessage, getMessage
从接口继承的方法 org.springframework.core.io.ResourceLoader
getClassLoader, getResource
从接口继承的方法 org.springframework.core.io.support.ResourcePatternResolver
getResources
构造器详细资料
AnnotationConfigWebApplicationContext
public AnnotationConfigWebApplicationContext()
方法详细资料
setBeanNameGenerator
public void setBeanNameGenerator(@Nullable BeanNameGenerator beanNameGenerator)
Set a customBeanNameGenerator
for use withAnnotatedBeanDefinitionReader
and/orClassPathBeanDefinitionScanner
.Default is
AnnotationBeanNameGenerator
.
getBeanNameGenerator
@Nullable protected BeanNameGenerator getBeanNameGenerator()
Return the customBeanNameGenerator
for use withAnnotatedBeanDefinitionReader
and/orClassPathBeanDefinitionScanner
, if any.
setScopeMetadataResolver
public void setScopeMetadataResolver(@Nullable ScopeMetadataResolver scopeMetadataResolver)
Set a customScopeMetadataResolver
for use withAnnotatedBeanDefinitionReader
and/orClassPathBeanDefinitionScanner
.Default is an
AnnotationScopeMetadataResolver
.
getScopeMetadataResolver
@Nullable protected ScopeMetadataResolver getScopeMetadataResolver()
Return the customScopeMetadataResolver
for use withAnnotatedBeanDefinitionReader
and/orClassPathBeanDefinitionScanner
, if any.
register
public void register(Class<?>... componentClasses)
Register one or more component classes to be processed.Note that
AbstractApplicationContext.refresh()
must be called in order for the context to fully process the new classes.- 指定者:
register
在接口中AnnotationConfigRegistry
- 参数:
componentClasses
- one or more component classes, e.g.@Configuration
classes- 另请参阅:
scan(String...)
,loadBeanDefinitions(DefaultListableBeanFactory)
,AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
,AbstractApplicationContext.refresh()
scan
public void scan(String... basePackages)
Perform a scan within the specified base packages.Note that
AbstractApplicationContext.refresh()
must be called in order for the context to fully process the new classes.- 指定者:
scan
在接口中AnnotationConfigRegistry
- 参数:
basePackages
- the packages to check for component classes- 另请参阅:
loadBeanDefinitions(DefaultListableBeanFactory)
,register(Class...)
,AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
,AbstractApplicationContext.refresh()
loadBeanDefinitions
protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
Register aBeanDefinition
for any classes specified byregister(Class...)
and scan any packages specified byscan(String...)
.For any values specified by
AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
orAbstractRefreshableConfigApplicationContext.setConfigLocations(String[])
, attempt first to load each location as a class, registering aBeanDefinition
if class loading is successful, and if class loading fails (i.e. aClassNotFoundException
is raised), assume the value is a package and attempt to scan it for component classes.Enables the default set of annotation configuration post processors, such that
@Autowired
,@Required
, and associated annotations can be used.Configuration class bean definitions are registered with generated bean definition names unless the
value
attribute is provided to the stereotype annotation.- 指定者:
loadBeanDefinitions
在类中AbstractRefreshableApplicationContext
- 参数:
beanFactory
- the bean factory to load bean definitions into- 另请参阅:
register(Class...)
,scan(String...)
,AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
,AbstractRefreshableConfigApplicationContext.setConfigLocations(String[])
,AnnotatedBeanDefinitionReader
,ClassPathBeanDefinitionScanner
getAnnotatedBeanDefinitionReader
protected AnnotatedBeanDefinitionReader getAnnotatedBeanDefinitionReader(DefaultListableBeanFactory beanFactory)
Build anAnnotatedBeanDefinitionReader
for the given bean factory.This should be pre-configured with the
Environment
(if desired) but not with aBeanNameGenerator
orScopeMetadataResolver
yet.- 参数:
beanFactory
- the bean factory to load bean definitions into- 从以下版本开始:
- 4.1.9
- 另请参阅:
AbstractApplicationContext.getEnvironment()
,getBeanNameGenerator()
,getScopeMetadataResolver()
getClassPathBeanDefinitionScanner
protected ClassPathBeanDefinitionScanner getClassPathBeanDefinitionScanner(DefaultListableBeanFactory beanFactory)
Build aClassPathBeanDefinitionScanner
for the given bean factory.This should be pre-configured with the
Environment
(if desired) but not with aBeanNameGenerator
orScopeMetadataResolver
yet.- 参数:
beanFactory
- the bean factory to load bean definitions into- 从以下版本开始:
- 4.1.9
- 另请参阅:
AbstractApplicationContext.getEnvironment()
,getBeanNameGenerator()
,getScopeMetadataResolver()