当前位置: java基础教程 > 30-spring > 阅读正文

spring的AOP

2021.6.1.   394 次   627字

springAOP(Aspect Oriented Programming) 也称为切面编程

之所以得到这个名称, 也是翻译过来的,光看名字其实不太好理解

AOP解决了什么问题?

aop本身不是取代oop, 而是oop的一种补充, 我们看一下下面这个代码

insert(){ //插入一条数据
   //1.参数验证
   checkArgs(); //参数验证方法
   //2.前置日志
   beforeLog();
   //3.核心, 添加数据
   add();
   //4.后置日志
   afterLog();
}
delete(){ //删除一条数据
   //1.参数验证
   checkArgs(); //参数验证方法
   //2.前置日志
   beforeLog();
   //3.核心, 删除数据
   sub();
   //4.后置日志
   afterLog();
}

在上面这个oop代码中, 可以清晰的看到, 当不同的方法中, 存在相同的逻辑处理时, 往往通过抽取共同的代码封装为方法, 然后再调用, 但这样的做法耦合依然太高. 在添加时需要先有这个方法, 通用方法删除时所有调用的也要去掉这一部分, 否则编译不通过

我们都知道, 代码肯定要先被实例化到内存中, 那么我们为何不在内存中动态给方法插入通用方法呢?这样一来是不是代码就只需要写各自的核心部分就可以了, 这就是springAOP给出的解决方案.

简单点说, springAOP就是在运行时(内存中), 动态给方法或某个位置插入代码, 至于为何取名切面编程, 也许是因为先切开, 再插入代码, 比较形象而取名

springAOP有多种实现方式, 比如代理模式.

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群