AOP(Aspect-Oriented Programming)面向切面编程
- 定义:能够将那些与业务无关,确为业务模块所共同调用的逻辑与责任(例如事务处理,日志管理,权限控制等)封装起来,便于减少系统的重复代码,降低模块的耦合度,并有利于未来的可拓展性和可维护性。
- 切:横切逻辑。
- 面:横切逻辑代码往往影响多个方法,这些方法看做一个个点的话,则形成一个面。
- 使用技术:动态代理。
- 横切逻辑代码:在多个纵向(顺序)流程中出现的相同的子流程代码,我们称之为横切逻辑代码。其一般对应的就是事务控制,权限校验,日志等。
横切逻辑代码问题:
- 代码重复问题
- 横切逻辑代码与业务代码混杂在一起,代码臃肿,不便于维护。
AOP作用:横向抽取机制;将横切逻辑代码与业务逻辑代码分离。
优势:
IOC(Inverse of Control)容器管理
- 定义:将原本在程序中手动创建对象的控制权,交由Spring框架来管理,为一种思想。
- 控制反转:
控制:指的是对象创建(实例化,管理)的权力。
反转:将控制权交给外部环境。 - 实质:Map(key,value),Map中存放的是各种对象。
- 作用:完成对象的注入与对象之间相互依赖关系的管理。
优势
- 对象之间的耦合度或者依赖程度降低。
- 资源变得容易管理。