Bean 其实就是包装了的 Object,无论是控制反转还是依赖注入,它们的主语
都是 object ,而 bean 就是由第三方包装好了的 object。(想一下别人送礼物
给你的时候都是要包装一下的,自己造的就免了。
IoC 容器
既然说容器是 IoC 最重要的部分,那么 Spring 如何设计容器的呢?
还是回到官网,第二段有介绍哦:
答:使用ApplicationContext,它是BeanFactory的子类,更好的补充并实
现了BeanFactory的。
BeanFactory 简单粗暴,可以理解为 HashMap:
Key - bean name
Value - bean object
但它一般只有 get, put “ ”两个功能,所以称之为 低级容器 。
而ApplicationContext “多了很多功能,因为它继承了多个接口,可称之为 高
”级容器 。在下文的搭建项目中,我们会使用它。
ApplicationContext的里面有两个具体的实现子类,用来读取配置配件的:
ClassPathXmlApplicationContext- 从 class path 中加载配置文件,更常用一些;
FileSystemXmlApplicationContext- 从本地文件中加载配置文件,不是很常用,
如果再到 Linux 环境中,还要改路径,不是很方便。
当我们点开ClassPathXmlApplicationContext时,发现它并不是直接继承A
pplicationContext的,它有很多层的依赖关系,每层的子类都是对父类的补
充实现。
而再往上找,发现最上层的 class 回到了BeanFactory,所以它非常重要。
要注意,Spring 中还有个FactoryBean,两者并没有特别的关系,只是名字比
较接近,所以不要弄混了顺序。