AOP :面向切面编程
在软件工程领域有一个概念:关注点分离 ,不同的问题交给不同的部分去解决。
AOP其实就是这个思想。
怎么理解呢?
例如我们写业务代码的时候还需要考虑日志、缓存..等通用的功能。这些通用功能的实现就是所谓的切面(Aspect),当业务代码和切面代码分离之后,开发者即可专注于业务逻辑处理,架构将变得高内聚低耦合。但是最终你编写的业务代码是需要这些被剥离出来的通用功能,又需要合在一起,这个过程就是切面被合并到业务中,这被称为Weave。
如何织如呢?
涉及AOP的技术
1、 编译时织入
2、类加载时织入
3、运行时织入:spring采用此种方式,通过动态代理的方式,实现简单。