IOC及其相关组件

321 阅读1分钟

IOC

IOC(Inverse of Control:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IOC容器时Spring用来实现IOC的载体,IOC容器实际上是一个Map,存放着各种对象。

将对象之间的相互依赖关系交给IOC容器来管理,并由IOC容器完成对象的注入,可以应用从复杂的依赖关系中解放出来。IOC容器像是一个工厂,当创建一个对象时,只需要配置好配置文件或者注解即可,完全不用考虑对象是如何被创建出来的。

IOC相关组件

Resource

Resource是对资源的抽象,它的每一个实现类都代表一种资源的访问策略,例如ClasspathResourceURLResource 、FileSystemResource等。

Spring利用ResourceLoader来进行统一资源加载。

BeanFactory

BeanFactory是一个bean容器,其中BeanDefinition是它的基本结构,它内部维护着一个BeanDefinition Map,并且可以根据BeanDefinition的描述进行bean的创建和管理。

BeanFactory有三个直接子类ListableBeanFactoryHierarchicalBeanFactory和 AutowireCapableBeanFactoryDefaultListableBeanFactory 为最终默认实现,它实现了所有接口。

Beandefinition

Beandefinition用来描述Spring中的Bean对象。

BeanDefinitionReader

BeanDefinitionReader的作用是读取Spring的配置文件,并将其转换成IOC容器内部的数据结构BeanDefinition。

Apploication

Application是个Spring容器,也叫做应用上下文。它继承BeanFactory,是BeanFactory的扩展升级版,其与BeanFactory的主要区别有:

  • 继承 MessageSource,提供国际化的标准访问策略。
  • 继承 ApplicationEventPublisher ,提供强大的事件机制。
  • 扩展 ResourceLoader,可以用来加载多个 Resource,可以灵活访问不同的资源。
  • 对 Web 应用的支持。