10、Spring之AOP概述

这篇具有很好参考价值的文章主要介绍了10、Spring之AOP概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

10.1、概念

  • AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程

  • AOP是面向对象编程(OOP)的一种补充和完善,OOP是纵向继承机制,AOP是横向抽取机制

  • AOP能通过预编译方式和运行期动态代理方式,实现在不修改源代码的情况下动态地为程序添加统一的附加功能

10.2、术语

10.2.1、横切关注点

横切关注点是从目标方法中抽取出来的非核心业务代码,一个目标方法中可以有多个横切关注点

    public int add(int i, int j) {

	//输出日志属于非核心业务,这是该目标方法的第1个横切关注点
        System.out.println("[日志] add 方法开始了,参数是:" + i + "," + j);

        int result = i + j;
        System.out.println("方法内部 result = " + result);

	//输出日志属于非核心业务,这是该目标方法的第2个横切关注点
        System.out.println("[日志] add 方法结束了,结果是:" + result);

        return result;

    }

10.2.2、通知

非核心业务代码在目标方法中叫横切关注点,其被抽取封装到一个类(切面类)的方法中,这样的方法就是通知方法

通知方法一共有五种类型:

  • 前置通知:在被代理的目标方法前执行

  • 返回通知:在被代理的目标方法成功结束后执行(寿终正寝)

  • 异常通知:在被代理的目标方法异常结束后执行(死于非命)

  • 后置通知:在被代理的目标方法最终结束后执行(盖棺定论)

  • 环绕通知:包括上面四种通知对应的所有位置


            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                Object result = null;
                try {
                    //前置通知增强位置:在调用目标对象执行功能之前,加入额外的操作
                    System.out.println("[日志] "+method.getName()+" 方法开始了,参数是:" + Arrays.toString(args));

                    //调用目标对象实现的核心逻辑
                    result = method.invoke(target, args);

                    //返回通知增强位置:在调用目标对象执行功能之后,加入额外的操作)
                    System.out.println("[日志] "+method.getName()+" 方法结束了,结果是:" + result);
                } catch (Exception e) {
                    //异常通知增强位置:在调用目标对象执行功能发生异常时,加入额外的操作
                    System.out.println("[日志] "+method.getName()+",异常:"+e.getMessage());
                }  finally {
                    //后置通知增强位置:在调用目标对象执行功能完毕时,加入额外的操作
                    System.out.println("[日志] "+method.getName()+",方法执行完毕");
                }

                //保证代理对象和目标对象的返回值一致
                return result;
            }

10.2.3、切面

切面是封装通知方法(横切关注点)的类,也叫切面类

10.2.4、目标

目标是被代理的(目标)对象,也就是要进行功能增强的对象,也可以说是要被抽取非核心业务代码的对象

10.2.5、代理

代理是对目标对象进行功能增强的(代理)对象,这个(代理)对象会由AOP通过代理模式自动创建

10.2.6、连接点

连接点是抽取横切关注点的位置

10.2.7、切入点

切入点是一个表达式,可以定位出连接点,从而实现把切面类中的通知方法安插到该位置

10.3、作用

  • 简化代码:把方法中固定位置的重复代码抽取出来,让被抽取非核心业务代码的方法更专注于自己的核心功能,从而提高内聚性

  • 代码增强:把特定的功能封装到切面类中,哪里有需要就往哪里安插,被安插了切面类特定功能的方法就被切面给增强了文章来源地址https://www.toymoban.com/news/detail-636056.html

到了这里,关于10、Spring之AOP概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot~aop方法拦截Aspect和InvocationHandler的理解

    在 Spring 中, @Autowired 注解的使用在不同的上下文中会产生不同的效果,这取决于所在的组件或类是否由 Spring 管理。 @Aspect 注解的使用 : @Aspect 注解通常用于声明切面,而切面是 Spring 管理的组件。因此, @Autowired 注解可以直接用于切面类,以注入其他 Spring 托管的 bean。S

    2024年02月10日
    浏览(26)
  • Spring AOP 的概念及其作用

    在介绍 Spring AOP 之前,首先要了解一下什么是 AOP ? AOP ( Aspect Oriented Programming ):面向切面编程,它是一种思想, 它是对某一类事情的集中处 理 。比如用户登录权限的效验,没学 AOP 之前,我们所有需要判断用户登录的页面(中的方法),都要各自实现或调用用户验证的

    2024年02月15日
    浏览(31)
  • Spring FrameWork从入门到NB - Spring AOP - 概念

    什么是AOP AOP - Aspect Oriented Programming的缩写,面向切面编程。 面向切面编程AOP是面向对象程序设计OOP的一个补充或扩展,是为了解决OOP在一些共性问题上的不足应运而生的。比如记录日志、事务处理、性能分析等等与业务无关的需求,需要发生在很多类的很多方法上,而需求

    2024年02月13日
    浏览(29)
  • Spring概述与核心概念学习 -- Spring入门(一)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码以及可以在我主页的资源里找到,如果在学

    2024年02月16日
    浏览(27)
  • Spring入门&控制反转(或依赖注入)&AOP的关键概念& 多配置文件&与web集成

    目录 1. 什么是spring,它能够做什么? 2. 什么是控制反转(或依赖注入) 3. AOP的关键概念 4. 示例 4.1 创建工程 4.2 pom文件 4.3 spring配置文件 4.4 示例代码 4.4.1 示例1 4.4.2 示例2 (abstract,parent示例) 4.4.3 使用有参数构造方法创建javaBean 4.4.4 init-method:指定bean的初始化方法 4.4.5 复杂属

    2024年02月09日
    浏览(33)
  • 什么是函数式编程(functional programming)?在JavaScript中如何实现函数式编程的概念?

    前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一

    2024年02月07日
    浏览(40)
  • Springloc和aop的基础概念

    控制反转(IoC)和依赖注入(DI)是软件开发中常用的编程范式, 它们极大地提高了代码可维护性和可复用性,简化了代码结构。 什么是控制反转(IoC) 控制反转是- - 种编程模式,它将应用程序中的控制权转移到容器,通 过使用者给容器指定它需要的资源,容器来完成具体的对象创

    2024年02月13日
    浏览(18)
  • Javaweb之SpringBootWeb案例之AOP核心概念的详细解析

    2.3 AOP核心概念 通过SpringAOP的快速入门,感受了一下AOP面向切面编程的开发方式。下面我们再来学习AOP当中涉及到的一些核心概念。 1. 连接点:JoinPoint ,可以被AOP控制的方法(暗含方法执行时的相关信息) 连接点指的是可以被aop控制的方法。例如:入门程序当中所有的业务

    2024年02月21日
    浏览(36)
  • Spring AOP官方文档学习笔记(二)之基于注解的Spring AOP

    1.@Aspect注解 (1) @Aspect注解用于声明一个切面类,我们可在该类中来自定义切面,早在Spring之前,AspectJ框架中就已经存在了这么一个注解,而Spring为了提供统一的注解风格,因此采用了和AspectJ框架相同的注解方式,这便是@Aspect注解的由来,换句话说,在Spring想做AOP框架之前,

    2023年04月17日
    浏览(32)
  • 【Spring】Spring AOP

    前面我们学习了 SpringBoot 统一功能处理,这篇文章我将为大家分享 Spring 框架的第二大核心——AOP(第一大核心是 IOC) AOP(Aspect Oriented Programming)是一种编程范型,意为面向切面编程,什么是⾯向切面编程呢?切面就是指某⼀类特定问题,所以AOP也可以理解为面向特定⽅法编

    2024年01月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包