一个管理Bean的容器
两个基本功能:
通过描述管理Bean,包括发布和获取Bean
通过描述完成Bean间的依赖关系
举个例子:
我是一个学生,我想要学英语,我需要一个老师来对我辅导。
实现如下:
public class Student { @Autowired private Teacher teacher; public void leanEnglish(Teacher teacher) { 。。。 } 。。。 }
我需要一个英语老师来对我辅导,所以我要去找一个英语老师,我先来到培训机构,看看他们各个老师的评价,选择一个老师,然后与这个老师沟通课时,课费,辅导内容等等,这些动作都由我来完成。
如果我还想学数学,学语文,我就需要循环几遍上述的操作。
我去学校学习英语,数学和语文,学校直接为我找好了老师,我只需要上课就好了,别的工作都不需要做。
这里的学校就相当于spring。
理解了IOC,来到最难的容器部分。
spring的容器类真的好多好多,刚开始学的时候总是让人晕头转向的,看到类图就想放弃了。
之后我会把容器类分为两类,自己来画类图,只列出最重要的部分。
这里为了更好理解,将容器分为两类(就是通过名称来区分)
上下文对Bean工厂是扩展关系,也是持有关系
public class GenericApplicationContext extends AbstractApplicationContext implements BeanDefinitionRegistry { private final DefaultListableBeanFactory beanFactory; 。。。。 }