一、什么是AOP?

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming,面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角.
        在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面)

二、AOP的几种实现方式

实现 AOP 的技术,主要分为两大类:
静态代理 - 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强:

  • 编译时编织(特殊编译器实现)
  • 类加载时编织(特殊的类加载器实现)。

动态代理 - 在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

  • JDK 动态代理:通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口 。JDK

动态代理的核心是 InvocationHandler 接口和 Proxy 类 。

  • CGLIB 动态代理: 如果目标类没有实现接口,那么 Spring AOP 会选择使用 CGLIB 来动态

代理目标类 。 CGLIB ( Code Generation Library ),是一个代码生成的类库,可以在运行
时动态的生成某个类的子类,注意, CGLIB 是通过继承的方式做的动态代理,因此如果某个
类被标记为 final ,那么它是无法使用 CGLIB 做动态代理的。

三、Spring AOP and AspectJ AOP 的区别

Spring AOP 基于动态代理方式实现;AspectJ 基于静态代理方式实现。
        Spring AOP 仅支持方法级别的 PointCut;提供了完全的 AOP 支持,它还支持属性级别的 PointCut。

四、AOP的应用场景

场景一: 记录日志

场景二: 监控方法运行时间 (监控性能)

场景三: 权限控制

场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )

场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )

Spring框架学习——AOP相关推荐

  1. Spring框架学习笔记(三)(AOP,事务管理)

    Spring框架学习笔记(三) 九.AOP 9.1 AOP的注解配置 (1) 新建计算器核心功能(模拟:不能在改动核心代码) (2) 建立一个普通的Java类写增强代码(面向切面编程),使用Sprin ...

  2. 详解Spring框架的AOP机制

    AOP是Spring框架面向切面的编程思想,AOP采用一种称为"横切"的技术,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机将这些切面横向切入到业务流程指定 ...

  3. Spring框架学习(二)

    Spring框架学习笔记---->AOP AOP概念 AOP:aspect oriented programing,面向切面编程. 将软件的各个模块,按照横向的角度进行观察,发现各个模块之间存在 ...

  4. Spring框架学习笔记,超详细!!(4)

    Java小白开始学习Spring框架,一方面,跟着视频学习,并记录下学习笔记,方便以后复习回顾.另一方面,发布学习笔记来约束自己,学习路程还很遥远,继续加油坚持!!!希望能帮助到大家! 另外还有我的牛 ...

  5. Spring 框架之 AOP 原理深度剖析!|CSDN 博文精选

    作者 | GitChat 责编 | 郭芮 出品 | CSDN 博客 AOP(Aspect Oriented Programming)面向切面编程是 Spring 框架最核心的组件之一,它通过对程序结构 ...

  6. Spring框架学习-Spring和IOC概述

    一:什么是Spring框架? spring是一个分层的javase/EEfull-stack(一站式)轻量级的java开源框架.是为了解决企业开发的复杂性而创建的.框架的主要优势是分层架构,Sprin ...

  7. Spring框架学习笔记---完结

    一.简介 Spring:春天----->给软件行业带来了春天 2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架. 2004年3月24日,Spring框架 ...

  8. Spring框架学习路线

    文章目录 1.Spring 1.1.简介 1.2.优点 1.3.扩展 2.IOC理论 2.1.IOC的创建对象的方法 3.Spring配置 3.1.Bean配置 3.2.import 4.依赖注入 4 ...

  9. Spring框架学习笔记(1) ---[spring框架概念 , 初步上手使用Spring , 控制反转 依赖注入初步理解 ]

    spring官网 -->spring官网 spring5.3.12–>spring-framework 在线文档 --> Spring 5.3.12 文章目录 1.Spring概论 ...

  10. 史上最全面最易懂的,Spring框架学习教程

    Spring通过PlatformTransactionManager平台事务管理器接口对事务的管理进行高度抽象,但是该接口下具体的实现是由各个平台自己实现,Spring并不直接管理事务,而是提供了多种 ...

最新文章

  1. 如何在博客等文章中添加带有滚动条的文本框
  2. 数据结构:哈希表函数构造和冲突解决方法
  3. Css 分类 属性 选择器
  4. linux hbase 表大小,在Linux系统搭建hbase环境
  5. linux rsh配置 A主机无需密码登录B主机
  6. 关于微信支付后回调验证的处理
  7. 电子测量技术——基于Python的测量数据误差处理程序
  8. html5 drag api
  9. 【Postman】使用Tests进行环境变量设置
  10. vue脚手架安装步骤详情
  11. ios 裁剪框大小_ios 图片裁剪修改尺寸的方法总结
  12. ppt文字磨砂玻璃效果制作教程
  13. 抖音2018大数据分析报告
  14. 原生JS实现7中简单效果
  15. Google发布文本内容生成短视频工具:Imagen Video
  16. 统信UOS提示系统磁盘空间不足,磁盘扩容
  17. php微博毕业论文,php校园微博网站
  18. DataStage简介
  19. git 和 phabricator arc 常用 命令解析
  20. bpmn不带网关的流程

热门文章

  1. 华为精益看板探索之路【PPT+注解】
  2. MacOS升级Big Sur后32位锐捷客户端排坑历程
  3. 软件工程-软件维护/系统维护
  4. django学习日志(模板的渲染过程)第八部分:字符串数据转义
  5. Oracle统一访问代理层方案
  6. Ubuntu更新下载源
  7. 利用Github服务器做一个软件自动升级系统
  8. python tts 离线 linux_ubuntu16.04安装科大讯飞Linux SDK实现离线语音合成(TTS)
  9. 国内网络游戏企业的困境和出路
  10. php postgresql 数组,8.14. 数组 - [ PostgreSQL 手册 ] - 在线原生手册 - php中文网