本文共 963 字,大约阅读时间需要 3 分钟。
IOC与AOP是Spring框架的两大特性,学习Spring之前不得不先了解下这两大特性。
犹记得上软件工程课时,老师强调软件系统之间要“高内聚、低耦合”。这里就简单记录下耦合。耦合具有双面性。一方面,高耦合的代码难以复用、维护、理解,并且不易修复bug,因为修复一个bug就可能出现其他bug这种情况。另一方面,一定程度的耦合又是必须的,完全没有耦合的代码可能无法完成功能。因此,为了完成软件功能,耦合是必须的,但需要谨慎管理。[1]
IoC,即Inversion of Control,控制反转。
控制反转是把传统上由程序代码操控的对象的调用权直接交给容器,通过容器来实现对象组件的装配和管理,即由容器来创建对象并管理对象之间的依赖关系。 IoC容器加载过程:创建IoC配置文件抽象资源;创建一个BeanFactory;把读取配置信息的BeanDefinitionReader,是XmlBeanDefinitionReader配置给BeanFactory;把定义好的资源位置读入配置信息,具体的解析过程由XmlBeanDefinitionReader来完成,这样完成整个载入bean定义的过程。DI,即Dependency Injection,依赖注入,由容器动态地将某种依赖关系注入到组件之中。
通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象时进行设定,对象无需自行创建或管理他们的依赖关系,依赖关系将自动被注入到需要他们的对象当中去。[1]AOP,即Aspect-Oriented Programming,面向切面编程。
DI能够解耦,AOP则允许把遍布应用各处的功能分离出来形成可重用的组件。 面向切面编程,能促使软件系统实现关注点分离。系统有许多不同的组件组成,每个组件各负责一块特定功能。除了实现自身核心的功能外,这些组件还常承担着额外的职责。诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中区,这些系统服务通常被称为横切关注点。[1]转载地址:http://itswb.baihongyu.com/