1.什么是Spring容器
Spring容器是Spring的核心,它可以创建对象,把他们关联在一起,配置各个对象,并管理每个对象的整个生命周期。Spring容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为Spring Beans (一个对象就是一个Bean)。
Spring中有两种容器:
① BeanFactory 一个最简单的Spring容器,给依赖注入(DI)提供了基础的支持。
② ApplicationContext 此容器添加以一些企业需要用到的东西,更加全面。它包含了BeanFactory容器中的东西。
2.BeanFactory继承关系
BeanFactory继承结构
Bean定义的类层次关系图:
BeanFactory接口实现类:
3.源码分析
- BeanFactory---->ConfigurableListableBeanFactory
- Beanfactory ---->AbstractAutowireCapableBeanFactory
BeanFactory提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范。
public interface BeanFactory {
//使用转译符"&"来获取BeanFatory本身
String FACTORY_BEAN_PREFIX = "&";
//根据name获取Bean
Object getBean(String name) throws BeansException;
//根据name ,class类型获取Bean,其中name和class类型不匹配会报错
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
<T> ObjectProvider<T> getBeanProvider(Class<T> requiredType);
<T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType);
//根据name判断是否包含Bean
boolean containsBean(String name);
//检测是否是单例,JDK1.8模式是true
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
//检错是