AOP简介:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
AOP织入必导入的包

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.4</version>
</dependency>

1.静态代理

  • 抽象角色:一般会使用接口和抽象类
  • 真实角色:被代理的的角色
  • 代理角色:代理真实角色,代理真实角色后,我们一般会做附属角色
  • 客户:访问代理角色的人

代码步骤:

  • 接口
  • 真实角色
  • 代理角色
  • 客户端访问代理角色

代理模式的好处:

  • 可以使真实角色的操作更加纯粹,不用去关注一些公共的业务
  • 公共也就交给代理角色,实现业务的分工
  • 公共业务发生扩展时,方便集中管理
    缺点:
    一个真实角色就会产生一个代理角色,代码量会翻倍,开发效率低下

2.动态代理
-动态代理角色和静态代理一样

  • 动态代理的代理类是动态生成的,不是直接写好的
  • 动态代理的两大类:基于接口的动态代理,基于类的动态代理
  • 基于接口--jdk动态代理
  • 基于.字节码实现:Javasist