面向切面编程(AOP)和面向对象编程(OOP)类似,也是一种编程模式。Spring AOP 是基于 AOP 编程模式的一个框架,它的使用有效减少了系统间的重复代码,达到了模块间的松耦合目的。

AOP 的全称是“Aspect Oriented Programming”,即面向切面编程,它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时可以专心于核心业务,从而提高了开发效率。

AOP 采取横向抽取机制,取代了传统纵向继承体系的重复性代码,其应用主要体现在事务处理、日志管理、权限控制、异常处理等方面。

 目前最流行的 AOP 框架有两个,分别为 Spring AOP 和 AspectJ。

Spring AOP 使用纯 Java 实现,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类植入增强的代码。

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

名称 说明
Joinpoint(连接点) 指那些被拦截到的点,在 Spring 中,可以被动态代理拦截目标类的方法。
Pointcut(切入点) 指要对哪些 Joinpoint 进行拦截,即被拦截的连接点。
Advice(通知) 指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容。
Target(目标) 指代理的目标对象。
Weaving(植入) 指把增强代码应用到目标上,生成代理对象的过程。
Proxy(代理) 指生成的代理对象。
Aspect(切面) 切入点和通知的结合。

Spring AOP是什么?相关推荐

  1. Spring AOP + Redis解决重复提交的问题

    Spring AOP + Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依 ...

  2. 利用Spring AOP与JAVA注解为系统增加日志功能

    Spring AOP一直是Spring的一个比较有特色的功能,利用它可以在现有的代码的任何地方,嵌入我们所想的逻辑功能,并且不需要改变我们现有的代码结构. 鉴于此,现在的系统已经完成了所有的功能的开发 ...

  3. Spring AOP的一些概念

            切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象.事务管理是J2EE应用中一个关于横切关注点的很好的例子. 在Spring AOP中,切面可以使用通用类(基于模 ...

  4. Spring AOP与IOC

    Spring AOP实现日志服务 pom.xml需要的jar <dependency><groupId>org.apache.commons</groupId>&l ...

  5. Spring AOP与IOC以及自定义注解

    Spring AOP实现日志服务 pom.xml需要的jar <dependency><groupId>org.apache.commons</groupId>&l ...

  6. Spring Aop的应用

    2019独角兽企业重金招聘Python工程师标准>>> AOP的基本概念 连接点( Jointpoint) : 表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化.方法执行 ...

  7. Spring AOP详解(转载)所需要的包

    上一篇文章中,<Spring Aop详解(转载)>里的代码都可以运行,只是包比较多,中间缺少了几个相应的包,根据报错,几经百度搜索,终于补全了所有包. 截图如下: 在主测试类里面,有人怀疑 ...

  8. 关于spring aop Advisor排序问题

    关于spring aop Advisor排序问题 当我们使用多个Advisor的时候有时候需要排序,这时候可以用注解org.springframework.core.annotation.Order或 ...

  9. 利用spring aop统一处理异常和打日志

    利用spring aop统一处理异常和打日志 spring aop的概念,很早就写博客介绍了,现在在工作中真正使用. 我们很容易写出的代码 我们很容易写出带有很多try catch 和 logger. ...

  10. 我所理解的Spring AOP的基本概念

    Spring AOP中的概念晦涩难懂,读官方文档更是像读天书,看了很多例子后,写一些自己理解的一些spring的概念.要理解面向切面编程,要首先理解代理模式和动态代理模式. 假设一个OA系统中的一个功 ...

最新文章

  1. C#中的String和string有什么区别?还有ref关键字怎么用?
  2. bash shell while语法
  3. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受
  4. python3.8图片_python3.8.3官方中文文档[PDF][CHM][31.14MB]
  5. shell 中的 set命令 -e -o 选项作用
  6. 通过反射获取私有构造方法并使用
  7. django.db.utils.OperationalError: no such column: catalogue_product.is_public
  8. 【centOS】centOS安装图形界面
  9. feign直接走熔断_SpringCloud微服务面试必问:Hystrix 服务降级、熔断
  10. 【CF 543D】Road Improvement,树形DP
  11. mysql 建立一棵树_如何存储一颗树到文件或者数据库
  12. 英伟达 VS. 英特尔:后浪来袭!
  13. window.showModalDialog用法
  14. weblogic 下载文件问题
  15. STM32F103C8T6基于HAL库移植uC/OS-III
  16. 职场分享--职场中如何做一名优秀的员工
  17. ApacheCN 计算机视觉译文集 20210218 更新
  18. 【Python 脚本报错】AttributeError:‘module‘ has no attribute ‘xxx‘的解决方法
  19. c++如何求任意多边形的面积
  20. 在xampp中访问html,怎么控制远程访问xampp

热门文章

  1. python爬取京东评论_Python如何爬取京东的评价信息
  2. c++ 显示三维散点图_【无机纳米材料科研制图——OriginLab 0210】Origin多组柱状图3D柱状图及3D散点图...
  3. 电脑端二维码识别工具_电脑端自签工具更新,多功能软件一键签名
  4. 如何关闭默认浏览器检查
  5. 搜狐视频怎么下载到电脑
  6. win10 dns异常上不了网如何解决
  7. Java 单例模式:懒加载(延迟加载)和即时加载
  8. 失败的人生图片_人到中年,做事失败了,很可能是遇到了以下五种情况
  9. java同样作用的方法_Java的接口用途和方法
  10. python类的定义和创建_Python类对象的创建和使用