首页 专题 文章 代码 归档
Spring中的AOP概述
2020.01.26 11:51 2020.02.24 16:06

1. Spring中的AOP

1.1. 概述

AOP(Aspect Oriented Programming):面向切面编程。

面向切面编程(也叫面向方面编程),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。

利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。


也是就是说,AOP 是一种编程典范,它通过分离横切关注点来增加程序的模块化。

简单说就是 AOP 可以在不修改现有代码的情况下对现有代码增加一些功能,那么这就是 AOP 最强大的功能。

  • AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码
  • 经典应用:事务管理、性能监视、安全检查、缓存
  • Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入量代码。
  • AspectJ是一个基于Java语言的AOP框架,Spring2.0开始,Spring AOP引入对AspectJ的支持,AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代码的织入。

1.2. AOP实现原理

  • AOP底层将采用代理机制进行实现。
  • 接口+实现类:sping采用idk的动态代理Proxy
  • 实现类:spring采用cglib,字节码增强。

1.3. 相关概念

1、target:目标类,需要被代理的类。

2、Joinpoint:连接点,所谓连接点是指那些可能被拦截到的方法。例如:所有的方法。

3、PointCut:切入点,已经被增强的连接点。

4、advice:通知、增强,增强的代码。

5、Weaving:织入,是指把增强advice应用到目标对象target来创建新的代理对象proxy的过程

6、proxy:代理类,就是把advice增强代码集合在一起的某个类。

7、Aspect:即切面,切面一般定义为一个 Java 类, 切入点 pointcut和通知 advice 的结合。

1.4. 一张经典的图

截图-1579951312 (图片来自 baeldung)

如上图所示,在程序执行过程中,有很多连接点(而连接点一般是某个类中的某个方法),而我们只选取了一些连接点作为切入点,而Advice中的代码就是我们在切点处要执行的代码!

2. 准备一个新的项目

项目名称为:spring-aop,导入的jar暂时为:

截图-1580006954

暂时只需要将spring的核心包导入即可。加一些辅助包:如Junit,Spring-test。

下一节我们将介绍如何自己手动实现一个代理。

本节阅读完毕! (分享
二维码图片 扫描关注我们哟