【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