Spring AOP(面向切面编程)简介说明

Java-框架王 Spring 发布时间:2021-07-16 15:41:36 阅读数:18848 1
AOP:“Aspect Oriented Programming”,即面向切面编程,和 OOP(面向对象编程它是一种全新的编程思想
AOP的核心是采用(动态代理)会方法增强相应的功能,
使用AOP可减少代码的重复,为代码扩展带来了遍历性,常见的应用如:
事务处理、日志管理、权限控制、异常处理等
AOP的主要功能: 分离功能性需求和非功能性需求,
使开发人员可以集中处理某一个关注点或者横切逻辑,减少对业务代码的侵入,增强代码的可读性和可维护性

通俗的讲:
AOP可以在不改变源代码的情况下,为业务块添加一种通用的功能,AOP底层是借助代理模式进行实现
目前比较流行的AOP框架有两个: 一、Spring AOP 二、AspectJ

Spring AOP:

是基于AOP编程模式的一个框架,它能够有效的减少系统间的重复代码,达到松耦合的目的
Spring AOP 使用纯 Java 实现,无需使用其它的类加载器, 是使用代理方式向目标类植入增强的代码
目前有两种方式实现:
基于接口的 JDK 动态代理和基于继承的 CGLIB 动态代理。

AspectJ:

是一个基于 Java 语言的 AOP 框架,从 Spring 2.0 开始,Spring AOP 引入了对 AspectJ 的支持
AspectJ 扩展了 Java 语言,提供了一个专门的编译器,在编译时提供横向代码的植入

为什么使用AOP

AOP变成模式,可在实际逻辑运行之前,之后,或周围等一些关注点上,运行指定的代码,如下例所示:
class javaTest{ 
    public void a1(){...} 
    public void a2(){...} 
    public void a3(){...}  
    public void b1(){...} 
    public void b2(){...} 
    public void b1(){...} 
    public void c1(){...} 
    public void c2(){...} 
}

想实现在使用a开头的方法上添加发送通知的功能, 
在以前没有AOP时,我们需修改a开头方法的代码,
那么今天有了AOP,我们可以在不修改源代码的情况下对方法进行增加,这就是我们需使用AOP的原因

AOP常见术语

名称 说明
Joinpoint(连接点) 指那些被拦截到的点,在 Spring 中,指可以被动态代理拦截目标类的方法
Pointcut(切入点) 指要对哪些 Joinpoint 进行拦截,即被拦截的连接点
Advice(通知) 指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容
Target(目标) 指代理的目标对象
Weaving(植入) 指把增强代码应用到目标上,生成代理对象的过程
Proxy(代理) 指生成的代理对象
Aspect(切面) 切入点和通知的结合
Advice 直译为通知,也有的资料翻译为“增强处理”,共有 5 种类型,如下表

增强处理的类型

通知 说明
before(前置通知) 通知方法在目标方法调用之前执行
after(后置通知) 通知方法在目标方法返回或异常后调用
after-returning(返回后通知) 通知方法会在目标方法返回后调用
after-throwing(抛出异常通知) 通知方法会在目标方法抛出异常后调用
around(环绕通知) 通知方法会将目标方法封装起来
通过以上的学习,我们可了解到AOP编程方式可对业务逻辑的各部分进行隔离,
使业务逻辑之间的耦合对降低,增强代码的可重用性,同时提高开发效率,
是Spring的核心
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202107/513.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者