IOC
IOC(Inverse of Control:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IOC容器时Spring用来实现IOC的载体,IOC容器实际上是一个Map,存放着各种对象。
将对象之间的相互依赖关系交给IOC容器来管理,并由IOC容器完成对象的注入,可以应用从复杂的依赖关系中解放出来。IOC容器像是一个工厂,当创建一个对象时,只需要配置好配置文件或者注解即可,完全不用考虑对象是如何被创建出来的。
IOC相关组件
Resource
Resource是对资源的抽象,它的每一个实现类都代表一种资源的访问策略,例如ClasspathResource、URLResource 、FileSystemResource等。
Spring利用ResourceLoader来进行统一资源加载。
BeanFactory
BeanFactory是一个bean容器,其中BeanDefinition是它的基本结构,它内部维护着一个BeanDefinition Map,并且可以根据BeanDefinition的描述进行bean的创建和管理。
BeanFactory有三个直接子类ListableBeanFactory、HierarchicalBeanFactory和 AutowireCapableBeanFactory,DefaultListableBeanFactory 为最终默认实现,它实现了所有接口。
Beandefinition
Beandefinition用来描述Spring中的Bean对象。
BeanDefinitionReader
BeanDefinitionReader的作用是读取Spring的配置文件,并将其转换成IOC容器内部的数据结构BeanDefinition。
Apploication
Application是个Spring容器,也叫做应用上下文。它继承BeanFactory,是BeanFactory的扩展升级版,其与BeanFactory的主要区别有:
- 继承
MessageSource,提供国际化的标准访问策略。 - 继承
ApplicationEventPublisher,提供强大的事件机制。 - 扩展
ResourceLoader,可以用来加载多个Resource,可以灵活访问不同的资源。 - 对
Web应用的支持。