一. IOC容器结构
1.1 IOC容器在spring中实现
解释:spring中有IOC思想,IOC思想必须基于IOC容器来完成,而IOC容器在最底层本质上就是一个对象工厂。(即IOC容器的工作内容就是处理Java对象的)
- 在通过IOC容器读取Bean的实例之前,需要先将IOC容器本身实例化
- spring提供了2种IOC容器实现方式:
方式 | 解释 |
---|---|
BeanFactory | IOC容器的基本实现,是spring内部的基础设施,是面向spring本身的,不是面向开发人员使用的 |
ApplicationContext | BeanFactory的子接口,提供了更多高级特性。面向spring的使用者(开发人员),几乎所有场合都是ApplicationContext而不是BeanFactory |
BeanFactory接口的outline如下:
(如何查看?ctrl+shift+T搜索BeanFactory,然后导入spring-bean的jar包源码,打开的类中,将光标放在类名上,按ctrl+T即可查看BeanFactory的outline):
解释:ClassPathApplicationContext是从项目的源文件夹查找文件,FileSystemXmlApplicationContext是从本地磁盘中查找文件。
1.2 ApplicationContext的主要实现类
实现类 | 解释 |
---|---|
ClassPathXmlApplicationContext | 对应类路径下的XML格式的配置文件 |
FileSystemXmlApplicationContext | 对应文件系统中的XML格式的配置文件 |
1.3 ConfigurableApplicationContext
- 是ApplicationContext的子接口,包含一些扩展方法
- refresh()和close()让ApplicationContext具有启动、关闭、刷新上下文的功能
1.4 WebApplicationContext
- 专门为Web应用而准备的,它允许从相对于web根目录的路径中完成初始化工作