①. 什么是BeanFactory(Bean工厂)?
- ①. 按照上面的Spring的原理图,Spring的整个框架其实就是工厂里面造东西的流程,分析清楚工厂干了什么活,Spring的整个框架也就清楚了
②. 进入BeanFactory里面就看到了核心的几句话:
总结源码中的话语:利用原型模式返回Prototype类型的bean,而单例模式返回单例bean
/** * The root interface for accessing a Spring bean container. * 根接口,整个访问容器的入口 * <p>This is the basic client view of a bean container; * further interfaces such as {@link ListableBeanFactory} and * {@link org.springframework.beans.factory.config.ConfigurableBeanFactory} * are available for specific purposes. * <p>This interface is implemented by objects that hold a number of bean definitions, * 这个接口是一个实现,保存很多的BeanDefinition信息,都有一个唯一的名字 * each uniquely identified by a String name. Depending on the bean definition, * the factory will return either an independent instance of a contained object * (the Prototype design pattern), or a single shared instance (a superior * 这个工厂将会返回独立的实例或者返回一个共享的实例 (原型模式、单例模式) * alternative to the Singleton design pattern, in which the instance is a * singleton in the scope of the factory). **/
②. BeanFactory类中分析
- ①. BeanFactory(Bean的工厂),工厂无外乎就是简单工厂,抽象工厂,工厂方法
- ②. 首先BeanFactory工厂里面暴露的方法有一个叫getBean(),这个是获取组件
工厂最重要的就是造组件,然后返回的是一个T类型的对象,它只造bean
<T> T getBean(Class<T> requiredType) throws BeansException;
- ③. 它不是简单工厂模式,Spring在底层不是一个ifelse判断就能搞定的,它底层还很复杂,外部只提供了一个工厂方法,使用工厂方法模式,给我们造组件对象
- ④. BeanFactory(Bean的工厂)里面下设三大工厂:俗称分厂