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


    转自:

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

    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的核心
  • 相关阅读:
    SAW的LC振荡器(转自www.dwenzhao.cn)
    动态内存管理知识点
    Day07 字符串
    基于stm32单片机的超声波测距显示倒车雷达提醒报警系统Proteus仿真
    威胁狩猎大合集
    前端缓存机制——强缓存、弱缓存、启发式缓存
    uniapp本地打包详细步骤
    vue3怎么创建项目
    回归分析中的异方差性
    力扣(LeetCode)11. 盛最多水的容器(C++)
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127700465