【Spring-01】BeanFactory和ApplicationContext
- 1. 容器接口
- 1.1 什么是 BeanFactory
- 1.2 BeanFactory 能做什么?
1. 容器接口
以 SpringBoot 的启动类为例:
/**
* BeanFactory 与 ApplicationContext的区别
*/
@SpringBootApplication
public class SpringStudyApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringStudyApplication.class, args);
}
}
在 IDEA 中使用快捷键 Ctrl + Alt + U 查看 ConfigurableApplicationContext 类的类图:

ConfigurableApplicationContext 接口继承了 ApplicationContext 接口,而 ApplicationContext 接口又间接地继承了 BeanFactory 接口,除此之外还继承了其他很多接口,相当于对 BeanFactory 进行了拓展。
同时可以看到BeanFactory是ApplicationContext的父接口,他是Spring的核心容器,像ApplicationContext都实现了他的功能。
补充:

1.1 什么是 BeanFactory
- 它是 ApplicationContext 的父接口
- 它才是 Spring 的核心容器,主要的 ApplicationContext 实现 组合 了它的功能,也就是说,BeanFactory 是 ApplicationContext 中的一个成员变量。
- 常用的 context.getBean(“xxx”) 方法,其实是调用了 BeanFactory 的 getBean() 方法。
1.2 BeanFactory 能做什么?
进入 BeanFactory 接口,在 IDEA 中使用快捷键 Ctrl + F12 查看这个接口中所有的方法定义:

通过这些方法定义可知,BeanFactory 表面上只有 getBean() 、containsBean()等方法,但实际上 Spring 中的控制反转、基本的依赖注入、乃至 Bean 的生命周期中的各个功能都是由它的实现类提供。
查看 DefaultListableBeanFactory 类的类图:
// TODO


















