Spring Boot-3-AbstractApplicationContext

AbstractApplicationContext是application context的第一个实现者,还是被定义为抽象的,之所以定义成抽象的,是因为他不必、不允许被实例化,不能直接被其他类聚合(他的子类可以)。

始自2001年1月21日
是org.springframework.context.ApplicationContext接口的抽象实现,不持有存储配置。简单实现公共application context的功能。使用模板方式设计模式,要求具体的子类实现抽象方法。

与空白BeanFactory相比,一个ApplicationContext应该检测其内部bean factory里的特殊bean:因此,这些bean被自动注册了
org.springframework.beans.factory.config.BeanFactoryPostProcessor
org.springframework.beans.factory.config.BeanPostProcessor
org.springframework.context.ApplicationListener
这些都在context里被定义为bean了。

一个org.springframework.context.MessageSource也被提供给了context,命名为messageSource。此外,message resolution被委托给了父context。同时,一个名为applicationEventMulticaster的multicaster在context中以bean的形式提供,并提供默认实现SimpleApplicationEventMulticaster。

一、容器的父子关系

在AbstractApplicationContext中有一个成员变量:

	@Nullable
	private ApplicationContext parent;

用来表示其父application context,这也是Spring的设计,在Spring Boot启动时,会创建2个application context,父application context是装载Spring bean的,字容器用来装载应用bean,子能访问父,父不访问子。

猜你喜欢

转载自blog.csdn.net/tales522/article/details/132843471