小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
什么是AOP?
全称为Aspect Oriented Programming: 面向切面编程. 通过预编译方式和运行期动态代理的方式实现功能的一种技术.
利用AOP可以对业务逻辑的各个部分进行隔离, 从而使得业务逻辑各部分之间的耦合度降低, 提高程序的可重用性, 并且提高开发效率.
AOP作用
AOP可以做到在程序的运行期间, 不修改业务代码的情况下对方法进行功能的增强.
AOP优势
- AOP可以减少重复的代码
- AOP可以在很大程度上提高开发效率
- AOP编写出来的代码, 可以很方便的进行维护
AOP的实现原理
AOP的底层是通过spring提供的动态代理技术实现的. 在程序的运行期间, spring动态生成代理对象, 代理对象的方法在执行时就可以进行增强功能的介入, 从而完成目标对象方法的功能增强.
基于JDK的动态代理
目标接口
1 | csharp复制代码 public interface TargetInterface { |
目标类
1 | csharp复制代码 public class Target implements TargetInterface { |
功能增强类
1 | csharp复制代码 public class Advice { |
基于jdk的功能增强
1 | scss复制代码 // 获取目标对象 |
基于cglib的动态代理
目标类
1 | csharp复制代码 public class Target { |
功能增强类
1 | csharp复制代码 public class Advice { |
基于cglib的功能增强
1 | scss复制代码 // 获取目标对象 |
本文转载自: 掘金