Spring容器ApplicationContext概览
我们直接看ApplicationContext的源代码:
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
String getId();
String getApplicationName();
String getDisplayName();
long getStartupDate();
ApplicationContext getParent();
AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
}
从源代码可以看出来ApplicationContext本身除了通过getAutowireCapableBeanFactory暴露内部的BeanFactory给框架开发者使用以为,其他的都是较为简单的代码。但是ApplicationContext继承了多个接口,主要继承的接口架构如下所示:
我们再来看一下ApplicationContext的主要子孙情况,主要如下图所示:
通过继承的接口和重要子孙情况我们对ApplicationContext有了概要的了解,下面我们就分两个方面来研究ApplicationContext:
ApplicationContext的父级关系
ApplicationEventPublisher事件发布器
@FunctionalInterface
public interface ApplicationEventPublisher {
default void publishEvent(ApplicationEvent event) {
publishEvent((Object) event);
}
void publishEvent(Object event);
}
代码比较简单,提供发布事件的方法而已,Spring的事件机制通过事件发布器发布事件,通过ApplicationListener接入Java的Event机制实现。整体逻辑也较为简单,有兴趣的可以去了解一下。
EnvironmentCapable环境属性
EnvironmentCapable 提供获取Environment的功能
public interface EnvironmentCapable {
Environment getEnvironment();
}
Environment 支持Profiles功能
public interface Environment extends Proper