IOC和AOP

IOC和AOP是Spring的两大特性

IOC(Inversion of Control),即“控制反转”,也叫“依赖注入”,英文名字DI(Dependency Injection)。IOC并不是一种技术实现,它是一种设计思想。在Java项目开发中,我们定义的每个类都是单一职责,都有它们特定的功能,然后通过类与类之间的相互协作来实现特定的业务处理逻辑。这样如果每个类都需要负责管理与自己有交互的类的引用和依赖,代码将会变的异常难以维护和极度的高耦合,和软件设计“高内聚,低耦合”的原则严重不符。IOC的设计思想正是用来解决这个问题,我们通过IOC将这些相互依赖对象的创建、协调工作交给Spring容器去处理,每个对象只需要关注其自身的业务逻辑关系就可以了。这样看,本来需要由类做的工作交给了Spring,由spring容器控制对象如何获取外部资源(包括其他对象和文件资料等等),进行了反转。

AOP(Aspect Oriented Programming),即“面向切面编程”,是为促使软件系统实现关注点的分离的技术。系统是由许多不同的组件所组成的,每一个组件各负责一块特定功能,比如日志记录模块负责记录日志,方法调用耗时负责记录方法执行的时间。除了实现自身核心功能之外,这些组件还经常承担着额外的职责。这些功能经常融入到自身具有核心业务逻辑的组件中去。这些系统服务经常被称为横切关注点,因为它们会跨越系统的多个组件。如果每个组件都要实现记录日志的功能,然后去重写一遍这些记录日志的代码,手写程序员会痛苦不堪,后期维护也将变得极其糟糕。关于AOP面向切面编程的实例可以参考我的这篇文章

打赏

作者:

操千曲而后晓声,观千剑而后识器

暂无关键词!