类 AbstractApplicationContext

java.lang.Object
cn.taketoday.core.io.DefaultResourceLoader
cn.taketoday.context.support.AbstractApplicationContext
所有已实现的接口:
BeanFactory, HierarchicalBeanFactory, DependencyInjectorProvider, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, cn.taketoday.core.env.EnvironmentCapable, cn.taketoday.core.io.PatternResourceLoader, cn.taketoday.core.io.ResourceLoader, Closeable, AutoCloseable
直接已知子类:
AbstractRefreshableApplicationContext, GenericApplicationContext

public abstract class AbstractApplicationContext extends cn.taketoday.core.io.DefaultResourceLoader implements ConfigurableApplicationContext
Abstract implementation of the ApplicationContext interface. Doesn't mandate the type of storage used for configuration; simply implements common context functionality. Uses the Template Method design pattern, requiring concrete subclasses to implement abstract methods.

In contrast to a plain BeanFactory, an ApplicationContext is supposed to detect special beans defined in its internal bean factory: Therefore, this class automatically registers BeanFactoryPostProcessors, BeanPostProcessors, and ApplicationListeners which are defined as beans in the context.

Implements resource loading by extending PathMatchingPatternResourceLoader. Consequently, treats non-URL resource paths as class path resources (supporting full class path resource names that include the package path, e.g. "mypackage/myresource.dat")

作者:
TODAY 2018-09-09 22:02
  • 字段详细资料

    • log

      protected final cn.taketoday.logging.Logger log
    • APPLICATION_EVENT_MULTICASTER_BEAN_NAME

      public static final String APPLICATION_EVENT_MULTICASTER_BEAN_NAME
      Name of the ApplicationEventMulticaster bean in the factory. If none is supplied, a default SimpleApplicationEventMulticaster is used.
      另请参阅:
    • MESSAGE_SOURCE_BEAN_NAME

      public static final String MESSAGE_SOURCE_BEAN_NAME
      Name of the MessageSource bean in the factory. If none is supplied, message resolution is delegated to the parent.
      另请参阅:
    • LIFECYCLE_PROCESSOR_BEAN_NAME

      public static final String LIFECYCLE_PROCESSOR_BEAN_NAME
      Name of the LifecycleProcessor bean in the factory. If none is supplied, a DefaultLifecycleProcessor is used.
      另请参阅:
  • 构造器详细资料

    • AbstractApplicationContext

      public AbstractApplicationContext()
      Create a new AbstractApplicationContext with no parent.
    • AbstractApplicationContext

      public AbstractApplicationContext(@Nullable ApplicationContext parent)
      Create a new AbstractApplicationContext with the given parent context.
      参数:
      parent - the parent context
  • 方法详细资料

    • createBootstrapContext

      protected abstract BootstrapContext createBootstrapContext()
      Return the DefinitionLoadingContext to use for loading this context
      返回:
      the DefinitionLoadingContext for this context
      从以下版本开始:
      4.0
    • setBootstrapContext

      public void setBootstrapContext(@Nullable BootstrapContext bootstrapContext)
      set BootstrapContext
      参数:
      bootstrapContext - BootstrapContext
      从以下版本开始:
      4.0
    • getBootstrapContext

      @Nullable public BootstrapContext getBootstrapContext()
      Returns BootstrapContext
      返回:
      Returns BootstrapContext
      从以下版本开始:
      4.0
    • obtainBootstrapContext

      protected final BootstrapContext obtainBootstrapContext()
    • getResources

      public Set<cn.taketoday.core.io.Resource> getResources(String locationPattern) throws IOException
      指定者:
      getResources 在接口中 cn.taketoday.core.io.PatternResourceLoader
      抛出:
      IOException
    • scan

      public void scan(String locationPattern, cn.taketoday.core.io.ResourceConsumer consumer) throws IOException
      指定者:
      scan 在接口中 cn.taketoday.core.io.PatternResourceLoader
      抛出:
      IOException
    • getPatternResourceLoader

      protected cn.taketoday.core.io.PatternResourceLoader getPatternResourceLoader()
      Return the ResourcePatternResolver to use for resolving location patterns into Resource instances. Default is a PathMatchingPatternResourceLoader, supporting Ant-style location patterns.

      Can be overridden in subclasses, for extended resolution strategies, for example in a web environment.

      Do not call this when needing to resolve a location pattern. Call the context's getResources method instead, which will delegate to the ResourcePatternResolver.

      返回:
      the ResourcePatternResolver for this context
      另请参阅:
    • setId

      public void setId(String id)
      Set the unique id of this application context.

      Default is the object id of the context instance, or the name of the context bean if the context is itself defined as a bean.

      指定者:
      setId 在接口中 ConfigurableApplicationContext
      参数:
      id - the unique id of the context
    • getId

      public String getId()
      从接口复制的说明: ApplicationContext
      Return the unique id of this application context.
      指定者:
      getId 在接口中 ApplicationContext
      返回:
      the unique id of the context, or null if none
    • getApplicationName

      public String getApplicationName()
      Return this application name for this context.
      指定者:
      getApplicationName 在接口中 ApplicationContext
      返回:
      a display name for this context (never null)
    • setDisplayName

      public void setDisplayName(String displayName)
      Set a friendly name for this context. Typically done during initialization of concrete context implementations.

      Default is the object id of the context instance.

      从以下版本开始:
      4.0
    • getDisplayName

      public String getDisplayName()
      Return a friendly name for this context.
      指定者:
      getDisplayName 在接口中 ApplicationContext
      返回:
      a display name for this context (never null)
      从以下版本开始:
      4.0
    • getParent

      @Nullable public ApplicationContext getParent()
      Return the parent context, or null if there is no parent (that is, this context is the root of the context hierarchy).
      指定者:
      getParent 在接口中 ApplicationContext
      返回:
      the parent context, or null if there is no parent
    • getAutowireCapableBeanFactory

      public AutowireCapableBeanFactory getAutowireCapableBeanFactory()
      从接口复制的说明: ApplicationContext
      Expose AutowireCapableBeanFactory functionality for this context.

      This is not typically used by application code, except for the purpose of initializing bean instances that live outside of the application context, applying the bean lifecycle (fully or partly) to them.

      Alternatively, the internal BeanFactory exposed by the ConfigurableApplicationContext interface offers access to the AutowireCapableBeanFactory interface too. The present method mainly serves as a convenient, specific facility on the ApplicationContext interface.

      NOTE: this method will consistently throw IllegalStateException after the application context has been closed. In current Framework versions, only refreshable application contexts behave that way; all application context implementations will be required to comply.

      指定者:
      getAutowireCapableBeanFactory 在接口中 ApplicationContext
      返回:
      the AutowireCapableBeanFactory for this context
      另请参阅:
    • getExpressionEvaluator

      public ExpressionEvaluator getExpressionEvaluator()
      指定者:
      getExpressionEvaluator 在接口中 ApplicationContext
      返回:
      ExpressionEvaluator of this context
    • getParentBeanFactory

      @Nullable public BeanFactory getParentBeanFactory()
      指定者:
      getParentBeanFactory 在接口中 HierarchicalBeanFactory
    • containsLocalBean

      public boolean containsLocalBean(String name)
      指定者:
      containsLocalBean 在接口中 HierarchicalBeanFactory
    • getInternalParentBeanFactory

      @Nullable protected BeanFactory getInternalParentBeanFactory()
      Return the internal bean factory of the parent context if it implements ConfigurableApplicationContext; else, return the parent context itself.
      另请参阅:
    • getMessage

      public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale)
      从接口复制的说明: MessageSource
      Try to resolve the message. Return default message if no message was found.
      指定者:
      getMessage 在接口中 MessageSource
      参数:
      code - the message code to look up, e.g. 'calculator.noRateSet'. MessageSource users are encouraged to base message names on qualified class or package names, avoiding potential conflicts and ensuring maximum clarity.
      args - an array of arguments that will be filled in for params within the message (params look like "{0}", "{1,date}", "{2,time}" within a message), or null if none
      defaultMessage - a default message to return if the lookup fails
      locale - the locale in which to do the lookup
      返回:
      the resolved message if the lookup was successful, otherwise the default message passed as a parameter (which may be null)
      另请参阅:
    • getMessage

      public String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException
      从接口复制的说明: MessageSource
      Try to resolve the message. Treat as an error if the message can't be found.
      指定者:
      getMessage 在接口中 MessageSource
      参数:
      code - the message code to look up, e.g. 'calculator.noRateSet'. MessageSource users are encouraged to base message names on qualified class or package names, avoiding potential conflicts and ensuring maximum clarity.
      args - an array of arguments that will be filled in for params within the message (params look like "{0}", "{1,date}", "{2,time}" within a message), or null if none
      locale - the locale in which to do the lookup
      返回:
      the resolved message (never null)
      抛出:
      NoSuchMessageException - if no corresponding message was found
      另请参阅:
    • getMessage

      public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException
      从接口复制的说明: MessageSource
      Try to resolve the message using all the attributes contained within the MessageSourceResolvable argument that was passed in.

      NOTE: We must throw a NoSuchMessageException on this method since at the time of calling this method we aren't able to determine if the defaultMessage property of the resolvable is null or not.

      指定者:
      getMessage 在接口中 MessageSource
      参数:
      resolvable - the value object storing attributes required to resolve a message (may include a default message)
      locale - the locale in which to do the lookup
      返回:
      the resolved message (never null since even a MessageSourceResolvable-provided default message needs to be non-null)
      抛出:
      NoSuchMessageException - if no corresponding message was found (and no default message was provided by the MessageSourceResolvable)
      另请参阅:
    • getInternalParentMessageSource

      @Nullable protected MessageSource getInternalParentMessageSource()
      Return the internal message source of the parent context if it is an AbstractApplicationContext too; else, return the parent context itself.
    • resetCommonCaches

      protected void resetCommonCaches()
      Reset reflection metadata caches, in particular the ReflectionUtils, AnnotationUtils, ResolvableType
      从以下版本开始:
      4.0
      另请参阅:
      • ReflectionUtils.clearCache()
      • AnnotationUtils.clearCache()
      • ResolvableType.clearCache()
    • refresh

      public void refresh() throws BeansException, IllegalStateException
      从接口复制的说明: ConfigurableApplicationContext
      Load or refresh the persistent representation of the configuration, which might be from Java-based configuration or some other format.

      As this is a startup method, it should destroy already created singletons if it fails, to avoid dangling resources. In other words, after invocation of this method, either all or no singletons at all should be instantiated.

      指定者:
      refresh 在接口中 ConfigurableApplicationContext
      抛出:
      ApplicationContextException - if the bean factory could not be initialized
      IllegalStateException - if already initialized and multiple refresh attempts are not supported
      BeansException
    • prepareRefresh

      protected void prepareRefresh()
      Prepare to load context
    • initPropertySources

      protected void initPropertySources() throws ApplicationContextException

      load properties files or itself strategies

      抛出:
      ApplicationContextException
    • registerFrameworkComponents

      protected void registerFrameworkComponents(ConfigurableBeanFactory beanFactory)
      Register Framework Beans
    • onRefresh

      protected void onRefresh()
      Initialization singletons that has already in context
    • obtainFreshBeanFactory

      protected ConfigurableBeanFactory obtainFreshBeanFactory()
      Tell the subclass to refresh the internal bean factory.
      返回:
      the fresh BeanFactory instance
      从以下版本开始:
      4.0
      另请参阅:
    • prepareBeanFactory

      public void prepareBeanFactory(ConfigurableBeanFactory beanFactory)
      Configure the factory's standard context characteristics, such as the context's ClassLoader and post-processors.
      参数:
      beanFactory - the BeanFactory to configure
    • postProcessBeanFactory

      protected void postProcessBeanFactory(ConfigurableBeanFactory beanFactory)
      Modify the application context's internal bean factory after its standard initialization. All bean definitions will have been loaded, but no beans will have been instantiated yet. This allows for registering special BeanPostProcessors etc in certain ApplicationContext implementations.
      参数:
      beanFactory - the bean factory used by the application context
    • invokeBeanFactoryPostProcessors

      protected void invokeBeanFactoryPostProcessors(ConfigurableBeanFactory beanFactory)
      Instantiate and invoke all registered BeanFactoryPostProcessor beans, respecting explicit order if given.

      Must be called before singleton instantiation.

    • registerBeanPostProcessors

      protected void registerBeanPostProcessors(ConfigurableBeanFactory beanFactory)
      Instantiate and register all BeanPostProcessor beans, respecting explicit order if given.

      Must be called before any instantiation of application beans.

    • initMessageSource

      protected void initMessageSource()
      Initialize the MessageSource. Use parent's if none defined in this context.
    • cancelRefresh

      protected void cancelRefresh(Exception ex)
      Cancel this context's refresh attempt, after an exception got thrown.
      参数:
      ex - the exception that led to the cancellation
    • doClose

      protected void doClose()
      Actually performs context closing: publishes a ContextClosedEvent and destroys the singletons in the bean factory of this application context.

      Called by both close() and a JVM shutdown hook, if any.

      从以下版本开始:
      4.0
      另请参阅:
    • registerShutdownHook

      public void registerShutdownHook()
      Register a shutdown hook named ContextShutdownHook with the JVM runtime, closing this context on JVM shutdown unless it has already been closed at that time.

      Delegates to doClose() for the actual closing procedure.

      指定者:
      registerShutdownHook 在接口中 ConfigurableApplicationContext
      另请参阅:
    • close

      public void close()
      Close this application context, destroying all beans in its bean factory.

      Delegates to doClose() for the actual closing procedure. Also removes a JVM shutdown hook, if registered, as it's not needed anymore.

      指定者:
      close 在接口中 ApplicationContext
      指定者:
      close 在接口中 AutoCloseable
      指定者:
      close 在接口中 Closeable
      指定者:
      close 在接口中 ConfigurableApplicationContext
      另请参阅:
    • destroyBeans

      protected void destroyBeans()
      Template method for destroying all beans that this context manages. The default implementation destroy all cached singletons in this context, invoking DisposableBean.destroy() and/or the specified "destroy-method".

      Can be overridden to add context-specific bean destruction steps right before or right after standard singleton destruction, while the context's BeanFactory is still active.

      从以下版本开始:
      4.0
      另请参阅:
    • onClose

      protected void onClose()
      Template method which can be overridden to add context-specific shutdown work. The default implementation is empty.

      Called at the end of doClose()'s shutdown procedure, after this context's BeanFactory has been closed. If custom shutdown logic needs to execute while the BeanFactory is still active, override the destroyBeans() method instead.

      从以下版本开始:
      4.0
    • isActive

      public boolean isActive()
      从接口复制的说明: ConfigurableApplicationContext
      Determine whether this application context is active, that is, whether it has been refreshed at least once and has not been closed yet.
      指定者:
      isActive 在接口中 ConfigurableApplicationContext
      返回:
      whether the context is still active
      另请参阅:
    • unwrapFactory

      public <T> T unwrapFactory(Class<T> requiredType)
      从接口复制的说明: ApplicationContext
      unwrap bean-factory to requiredType
      指定者:
      unwrapFactory 在接口中 ApplicationContext
      另请参阅:
    • hasStarted

      public boolean hasStarted()
      从接口复制的说明: ApplicationContext
      Context has started
      指定者:
      hasStarted 在接口中 ApplicationContext
      返回:
      is started
    • getState

      public ApplicationContext.State getState()
      从接口复制的说明: ApplicationContext
      Get context's state
      指定者:
      getState 在接口中 ApplicationContext
      返回:
      context's state
    • applyState

      protected void applyState(ApplicationContext.State state)
    • getStartupDate

      public long getStartupDate()
      从接口复制的说明: ApplicationContext
      Get the context startup time stamp
      指定者:
      getStartupDate 在接口中 ApplicationContext
      返回:
      startup timestamp
    • setParent

      public void setParent(@Nullable ApplicationContext parent)
      Set the parent of this application context.

      The parent environment is merged with this (child) application context environment if the parent is non-null and its environment is an instance of ConfigurableEnvironment.

      指定者:
      setParent 在接口中 ConfigurableApplicationContext
      参数:
      parent - the parent context
      另请参阅:
      • ConfigurableEnvironment.merge(ConfigurableEnvironment)
    • getEnvironment

      public cn.taketoday.core.env.ConfigurableEnvironment getEnvironment()
      从接口复制的说明: ConfigurableApplicationContext
      Get configurable environment
      指定者:
      getEnvironment 在接口中 ApplicationContext
      指定者:
      getEnvironment 在接口中 ConfigurableApplicationContext
      指定者:
      getEnvironment 在接口中 cn.taketoday.core.env.EnvironmentCapable
      返回:
      ConfigurableEnvironment never be null
    • createEnvironment

      protected cn.taketoday.core.env.ConfigurableEnvironment createEnvironment()
      Create and return a new StandardEnvironment.

      Subclasses may override this method in order to supply a custom ConfigurableEnvironment implementation.

    • setEnvironment

      public void setEnvironment(cn.taketoday.core.env.ConfigurableEnvironment environment)
      从接口复制的说明: ConfigurableApplicationContext
      Set the Environment for this application context.
      指定者:
      setEnvironment 在接口中 ConfigurableApplicationContext
      参数:
      environment - the new environment
    • addBeanFactoryPostProcessor

      public void addBeanFactoryPostProcessor(BeanFactoryPostProcessor postProcessor)
      从接口复制的说明: ConfigurableApplicationContext
      Add a new BeanFactoryPostProcessor that will get applied to the internal bean factory of this application context on refresh, before any of the bean definitions get evaluated. To be invoked during context configuration.
      指定者:
      addBeanFactoryPostProcessor 在接口中 ConfigurableApplicationContext
      参数:
      postProcessor - the factory processor to register
    • assertBeanFactoryActive

      protected void assertBeanFactoryActive()
      Assert that this context's BeanFactory is currently active, throwing an IllegalStateException if it isn't.

      Invoked by all BeanFactory delegation methods that depend on an active context, i.e. in particular all bean accessor methods.

    • getBean

      public Object getBean(String name)
      指定者:
      getBean 在接口中 BeanFactory
    • getBean

      public Object getBean(String name, Object... args) throws BeansException
      指定者:
      getBean 在接口中 BeanFactory
      抛出:
      BeansException
    • getBean

      public <T> T getBean(Class<T> requiredType)
      指定者:
      getBean 在接口中 BeanFactory
    • getBean

      public <T> T getBean(Class<T> requiredType, Object... args) throws BeansException
      指定者:
      getBean 在接口中 BeanFactory
      抛出:
      BeansException
    • getBean

      public <T> T getBean(String name, Class<T> requiredType)
      指定者:
      getBean 在接口中 BeanFactory
    • findSynthesizedAnnotation

      public <A extends Annotation> A findSynthesizedAnnotation(String beanName, Class<A> annotationType)
      指定者:
      findSynthesizedAnnotation 在接口中 BeanFactory
    • findAnnotationOnBean

      public <A extends Annotation> cn.taketoday.core.annotation.MergedAnnotation<A> findAnnotationOnBean(String beanName, Class<A> annotationType) throws NoSuchBeanDefinitionException
      指定者:
      findAnnotationOnBean 在接口中 BeanFactory
      抛出:
      NoSuchBeanDefinitionException
    • findAnnotationOnBean

      public <A extends Annotation> cn.taketoday.core.annotation.MergedAnnotation<A> findAnnotationOnBean(String beanName, Class<A> annotationType, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException
      指定者:
      findAnnotationOnBean 在接口中 BeanFactory
      抛出:
      NoSuchBeanDefinitionException
    • getAnnotatedBeans

      public <T> List<T> getAnnotatedBeans(Class<? extends Annotation> annotationType)
      指定者:
      getAnnotatedBeans 在接口中 BeanFactory
    • getBeansWithAnnotation

      public Map<String,Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType)
      指定者:
      getBeansWithAnnotation 在接口中 BeanFactory
    • getBeansWithAnnotation

      public Map<String,Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType, boolean includeNonSingletons)
      指定者:
      getBeansWithAnnotation 在接口中 BeanFactory
    • getBeanDefinitions

      public Map<String,BeanDefinition> getBeanDefinitions()
      指定者:
      getBeanDefinitions 在接口中 BeanFactory
    • isSingleton

      public boolean isSingleton(String name)
      指定者:
      isSingleton 在接口中 BeanFactory
    • isPrototype

      public boolean isPrototype(String name)
      指定者:
      isPrototype 在接口中 BeanFactory
    • getType

      public Class<?> getType(String name)
      指定者:
      getType 在接口中 BeanFactory
    • getType

      @Nullable public Class<?> getType(String name, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException
      指定者:
      getType 在接口中 BeanFactory
      抛出:
      NoSuchBeanDefinitionException
    • getBeanNamesForAnnotation

      public Set<String> getBeanNamesForAnnotation(Class<? extends Annotation> annotationType)
      指定者:
      getBeanNamesForAnnotation 在接口中 BeanFactory
    • containsBean

      public boolean containsBean(String name)
      指定者:
      containsBean 在接口中 BeanFactory
    • isTypeMatch

      public boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException
      指定者:
      isTypeMatch 在接口中 BeanFactory
      抛出:
      NoSuchBeanDefinitionException
    • isTypeMatch

      public boolean isTypeMatch(String name, cn.taketoday.core.ResolvableType typeToMatch) throws NoSuchBeanDefinitionException
      指定者:
      isTypeMatch 在接口中 BeanFactory
      抛出:
      NoSuchBeanDefinitionException
    • getObjectSupplier

      public <T> ObjectSupplier<T> getObjectSupplier(Class<T> requiredType)
      指定者:
      getObjectSupplier 在接口中 BeanFactory
    • getObjectSupplier

      public <T> ObjectSupplier<T> getObjectSupplier(cn.taketoday.core.ResolvableType requiredType)
      指定者:
      getObjectSupplier 在接口中 BeanFactory
    • getObjectSupplier

      public <T> ObjectSupplier<T> getObjectSupplier(Class<T> requiredType, boolean allowEagerInit)
      指定者:
      getObjectSupplier 在接口中 BeanFactory
    • getObjectSupplier

      public <T> ObjectSupplier<T> getObjectSupplier(cn.taketoday.core.ResolvableType requiredType, boolean allowEagerInit)
      指定者:
      getObjectSupplier 在接口中 BeanFactory
    • getAliases

      public String[] getAliases(String name)
      指定者:
      getAliases 在接口中 BeanFactory
    • getBeans

      public <T> List<T> getBeans(Class<T> requiredType)
      指定者:
      getBeans 在接口中 BeanFactory
    • getBeanNamesForType

      public Set<String> getBeanNamesForType(Class<?> requiredType, boolean includeNonSingletons)
      指定者:
      getBeanNamesForType 在接口中 BeanFactory
    • getBeanNamesForType

      public Set<String> getBeanNamesForType(Class<?> requiredType, boolean includeNonSingletons, boolean allowEagerInit)
      指定者:
      getBeanNamesForType 在接口中 BeanFactory
    • getBeansOfType

      public <T> Map<String,T> getBeansOfType(Class<T> requiredType)
      指定者:
      getBeansOfType 在接口中 BeanFactory
    • getBeansOfType

      public <T> Map<String,T> getBeansOfType(Class<T> requiredType, boolean includeNonSingletons, boolean allowEagerInit)
      指定者:
      getBeansOfType 在接口中 BeanFactory
    • getBeansOfType

      public <T> Map<String,T> getBeansOfType(cn.taketoday.core.ResolvableType requiredType, boolean includeNonSingletons, boolean allowEagerInit)
      指定者:
      getBeansOfType 在接口中 BeanFactory
    • getBeanNamesForType

      public Set<String> getBeanNamesForType(cn.taketoday.core.ResolvableType requiredType)
      指定者:
      getBeanNamesForType 在接口中 BeanFactory
    • getBeanNamesForType

      public Set<String> getBeanNamesForType(cn.taketoday.core.ResolvableType requiredType, boolean includeNonSingletons, boolean allowEagerInit)
      指定者:
      getBeanNamesForType 在接口中 BeanFactory
    • containsBeanDefinition

      public boolean containsBeanDefinition(String beanName)
      指定者:
      containsBeanDefinition 在接口中 BeanFactory
    • getBeanDefinition

      public BeanDefinition getBeanDefinition(String beanName) throws BeansException
      指定者:
      getBeanDefinition 在接口中 BeanFactory
      抛出:
      BeansException
    • getBeanDefinitionCount

      public int getBeanDefinitionCount()
      指定者:
      getBeanDefinitionCount 在接口中 BeanFactory
    • getBeanDefinitionNames

      public String[] getBeanDefinitionNames()
      指定者:
      getBeanDefinitionNames 在接口中 BeanFactory
    • getInjector

      public DependencyInjector getInjector()
      指定者:
      getInjector 在接口中 DependencyInjectorProvider
    • getFactoryPostProcessors

      public List<BeanFactoryPostProcessor> getFactoryPostProcessors()
    • addFactoryPostProcessors

      public void addFactoryPostProcessors(BeanFactoryPostProcessor... postProcessors)
    • start

      public void start()
      从接口复制的说明: Lifecycle
      Start this component.

      Should not throw an exception if the component is already running.

      In the case of a container, this will propagate the start signal to all components that apply.

      指定者:
      start 在接口中 Lifecycle
      另请参阅:
    • stop

      public void stop()
      从接口复制的说明: Lifecycle
      Stop this component, typically in a synchronous fashion, such that the component is fully stopped upon return of this method. Consider implementing SmartLifecycle and its stop(Runnable) variant when asynchronous stop behavior is necessary.

      Note that this stop notification is not guaranteed to come before destruction: On regular shutdown, Lifecycle beans will first receive a stop notification before the general destruction callbacks are being propagated; however, on hot refresh during a context's lifetime or on aborted refresh attempts, a given bean's destroy method will be called without any consideration of stop signals upfront.

      Should not throw an exception if the component is not running (not started yet).

      In the case of a container, this will propagate the stop signal to all components that apply.

      指定者:
      stop 在接口中 Lifecycle
      另请参阅:
    • isRunning

      public boolean isRunning()
      从接口复制的说明: Lifecycle
      Check whether this component is currently running.

      In the case of a container, this will return true only if all components that apply are currently running.

      指定者:
      isRunning 在接口中 Lifecycle
      返回:
      whether the component is currently running
    • setLifecycleProcessor

      public void setLifecycleProcessor(@Nullable LifecycleProcessor lifecycleProcessor)
    • initLifecycleProcessor

      protected void initLifecycleProcessor()
      Initialize the LifecycleProcessor. Uses DefaultLifecycleProcessor if none defined in the context.
      另请参阅:
    • getLifecycleProcessor

      public LifecycleProcessor getLifecycleProcessor() throws IllegalStateException
      Return the internal LifecycleProcessor used by the context.
      返回:
      the internal LifecycleProcessor (never null)
      抛出:
      IllegalStateException - if the context has not been initialized yet
    • getApplicationEventMulticaster

      public ApplicationEventMulticaster getApplicationEventMulticaster() throws IllegalStateException
      Return the internal ApplicationEventMulticaster used by the context.
      返回:
      the internal ApplicationEventMulticaster (never null)
      抛出:
      IllegalStateException - if the context has not been initialized yet
    • initApplicationEventMulticaster

      protected void initApplicationEventMulticaster()
      Initialize the ApplicationEventMulticaster. Uses SimpleApplicationEventMulticaster if none defined in the context.
      另请参阅:
    • getApplicationListeners

      public Collection<ApplicationListener<?>> getApplicationListeners()
      Return the list of statically specified ApplicationListeners.
    • publishEvent

      public void publishEvent(Object event)
      从接口复制的说明: ApplicationEventPublisher
      Notify all matching listeners registered with this application of an event.

      Such an event publication step is effectively a hand-off to the multicaster and does not imply synchronous/asynchronous execution or even immediate execution at all. Event listeners are encouraged to be as efficient as possible, individually using asynchronous execution for longer-running and potentially blocking operations.

      指定者:
      publishEvent 在接口中 ApplicationEventPublisher
      参数:
      event - the event to publish
      另请参阅:
    • publishEvent

      protected void publishEvent(Object event, @Nullable cn.taketoday.core.ResolvableType eventType)
      Publish the given event to all listeners.
      参数:
      event - the event to publish (may be an ApplicationEvent
      eventType - the resolved event type, if known
      从以下版本开始:
      4.0
    • registerApplicationListeners

      protected void registerApplicationListeners()
    • addApplicationListener

      public void addApplicationListener(ApplicationListener<?> listener)
      Add a new ApplicationListener that will be notified on context events such as context refresh and context shutdown.

      Note that any ApplicationListener registered here will be applied on refresh if the context is not active yet, or on the fly with the current event multicaster in case of a context that is already active.

      指定者:
      addApplicationListener 在接口中 ConfigurableApplicationContext
      参数:
      listener - the ApplicationListener to register
      另请参阅:
    • removeApplicationListener

      public void removeApplicationListener(ApplicationListener<?> listener)
      从接口复制的说明: ConfigurableApplicationContext
      Remove the given ApplicationListener from this context's set of listeners, assuming it got registered via ConfigurableApplicationContext.addApplicationListener(cn.taketoday.context.ApplicationListener<?>) before.
      指定者:
      removeApplicationListener 在接口中 ConfigurableApplicationContext
      参数:
      listener - the ApplicationListener to deregister
    • finishBeanFactoryInitialization

      protected void finishBeanFactoryInitialization(ConfigurableBeanFactory beanFactory)
      Finish the initialization of this context's bean factory, initializing all remaining singleton beans.
    • finishRefresh

      protected void finishRefresh()
      Finish the refresh of this context, invoking the LifecycleProcessor's onRefresh() method and publishing the ContextRefreshedEvent.
    • refreshBeanFactory

      protected abstract void refreshBeanFactory() throws BeansException, IllegalStateException
      Subclasses must implement this method to perform the actual configuration load. The method is invoked by refresh() before any other initialization work.

      A subclass will either create a new bean factory and hold a reference to it, or return a single BeanFactory instance that it holds. In the latter case, it will usually throw an IllegalStateException if refreshing the context more than once.

      抛出:
      BeansException - if initialization of the bean factory failed
      IllegalStateException - if already initialized and multiple refresh attempts are not supported
      从以下版本开始:
      4.0
    • closeBeanFactory

      protected void closeBeanFactory()
      Subclasses must implement this method to release their internal bean factory. This method gets invoked by close() after all other shutdown work.

      Should never throw an exception but rather log shutdown failures.

      从以下版本开始:
      4.0
    • getBeanFactory

      public abstract ConfigurableBeanFactory getBeanFactory()
      Subclasses must return their internal bean factory here. They should implement the lookup efficiently, so that it can be called repeatedly without a performance penalty.

      Note: Subclasses should check whether the context is still active before returning the internal bean factory. The internal factory should generally be considered unavailable once the context has been closed.

      指定者:
      getBeanFactory 在接口中 ApplicationContext
      指定者:
      getBeanFactory 在接口中 ConfigurableApplicationContext
      返回:
      this application context's internal bean factory (never null)
      抛出:
      IllegalStateException - if the context does not hold an internal bean factory yet (usually if refresh() has never been called) or if the context has been closed already
      另请参阅:
    • toString

      public String toString()
      Return information about this context.
      覆盖:
      toString 在类中 Object
    • formatStartupDate

      public String formatStartupDate()