AOP原理详解(看这篇就够了)

AOP原理详解(看这篇就够了)-mikechen

AOP是Spring非常重要的内容,而且Java面试经常问AOP原理,下面我就来详解AOP原理@mikechen

AOP定义

AOP,英文全称是Aspect Oriented Programming,翻译过来就是面向切面编程,AOP是一种编程思想和技术。

 

AOP作用

在AOP中我们通过定义:横切关注点和切面来实现对系统的功能进行增强或修改,而不是直接修改原有代码。

通过将横向的、通用的关注点,比如:如日志、事务、权限、性能统计等从纵向的业务逻辑中抽离出来。

如下图所示:

AOP原理详解(看这篇就够了)-mikechen

通过这种切面的方式,AOP实现了各个模块的分离,提高了系统的可重用性、可维护性和可扩展性。

 

AOP原理

AOP实现的关键在于“切面”,它可以定义在程序中的任意一个位置,并且可以在不改变原有程序逻辑的情况下对程序进行扩展。

AOP实现的主要技术有两种:静态代理和动态代理。

1.静态代理

静态代理是指在程序编译期间就已经确定了代理对象,代理对象与被代理对象的关系在编译期间就已经确定,因此也称为编译时织入。

 

2.动态代理

动态代理是指在程序运行时,通过反射机制动态生成代理对象,代理对象与被代理对象的关系在运行时确定,因此也称为运行时织入。

Spring AOP采用的是动态代理的方式实现切面,Spring AOP中的切面是基于AspectJ实现。

在Spring AOP中,切面由切点(Pointcut)和通知(Advice)组成,切点是指在程序中需要织入切面逻辑的位置,通知是切面逻辑的具体实现。

AOP原理详解(看这篇就够了)-mikechen

在Spring AOP中,通过配置切面(Aspect)和连接点(Join Point),来实现在特定位置、特定时间,织入特定的代码逻辑,其中,切面是被通知的对象,连接点是被通知的位置。

 

根据通知的不同,Spring AOP主要分为以下五种类型:

AOP原理详解(看这篇就够了)-mikechen

1.前置通知(Before Advice):在目标方法执行前执行;

2.后置通知(After Advice):在目标方法执行后执行,不管是否抛出异常;

3.返回通知(After Returning Advice):在目标方法返回后执行;

4.异常通知(After Throwing Advice):在目标方法抛出异常后执行;

5.环绕通知(Around Advice):在目标方法执行前和执行后都可以执行。

以上就是AOP原理详解,更多AOP内容请查看:Spring AOP全面详解

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法