Spring的AOP理解,Spring AOP和AspectJ AOP有什么区别?关注点和横切关注的区别是什么?什么是通知呢?有哪些类型呢?

157 篇文章 3 订阅
订阅专栏
本文介绍了AOP的核心概念,包括切面、横切关注点、连接点、切入点、通知以及SpringAOP和AspectJ的区别。重点阐述了两者在代理方式、增强时机及通知类型上的不同,强调了AOP在简化代码和提高系统扩展性方面的优势。
摘要由CSDN通过智能技术生成

AOP 核心概念

  • 切面(aspect):类是对物体特征的抽象,切面就是对横切关注点的抽象,官方的抽象定义为“一个关注点的模块化,这个关注点可能会横切多个对象”。
  • 横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点。
  • 连接点(joinpoint):被拦截到的点,因为 Spring 只支持方法类型的连接点,所以在 Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器。
  • 切入点(pointcut):对连接点进行拦截的定义
  • 通知(advice):所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类。
  • 目标对象:代理的目标对象
  • 织入(weave):将切面应用到目标对象并导致代理对象创建的过程
  • 引入(introduction):在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

AOP

AOP Aspect-Oriented Programming ,面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可扩展性和可维护性。Spring AOP是基于动态代理的,如果要代理的对象实现了某个接口,那么 Spring AOP 就会使用 JDK动态代理去创建代理对象;而对于没有实现接口的对象,就无法使用JDK 动态代理,转而使用 CGlib动态代理生成一个被代理对象的子类来作为代理。
注意:图中的 implements extend 。即一个是接口,一个是实现类。
当然也可以使用 AspectJ Spring AOP 中已经集成了 AspectJ AspectJ 应该算得上是 Java 生态系统中最完整的AOP 框架了。使用 AOP 之后我们可以把一些通用功能抽象出来,在需要用到的地方直接使用即可,这样可以大大简化代码量。我们需要增加新功能也方便,提高了系统的扩展性。日志功能、事务管理和权限管理等场景都用到了AOP

Spring AOPAspectJ AOP区别

Spring AOP 是属于运行时增强,而 AspectJ 是编译时增强。 Spring AOP 基于代理( Proxying ),而AspectJ基于字节码操作( Bytecode Manipulation )。Spring AOP已经集成了 AspectJ AspectJ 应该算得上是 Java 生态系统中最完整的 AOP 框架了。AspectJ相比于 Spring AOP 功能更加强大,但是 Spring AOP 相对来说更简单。如果我们的切面比较少,那么两者性能差异不大。但是,当切面太多的话,最好选择AspectJ ,它比SpringAOP快很多。

关注点和横切关注的区别

关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。 横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。那什么是连接点呢?连接点代表一个应用程序的某个位置,在这个位置我们可以插入一个AOP 切面,它实际上是个应用程序执行Spring AOP的位置。 切入点是什么?切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方 式指明切入点。

通知类型

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。Spring切面可以应用五种类型的通知:
  • before:前置通知,在一个方法执行前被调用。
  • after: 在方法执行之后调用的通知,无论方法执行是否成功。
  • after-returning: 仅当方法成功完成后执行的通知。
  • after-throwing: 在方法抛出异常退出时执行的通知。
  • around: 在方法执行之前和之后调用的通知。
写文章

热门文章

  • mysql的判断语句 4972
  • SpringBoot的全局异常拦截 3382
  • jdk1.8的Jenkins安装配置 2814
  • Redis消息队列 2792
  • Rabbitmq的消息转换器 2781

分类专栏

  • 工作问题总结 85篇
  • python 7篇
  • 运维 24篇
  • Go 14篇
  • 微服务 90篇
  • nginx 11篇
  • mysql面试题 54篇
  • vue 11篇
  • kafka 19篇
  • java面试题 157篇
  • MyCat 8篇
  • rabbitmq 20篇
  • 笔记题目 19篇
  • redis面试题 24篇
  • elasticsearch 11篇
  • redis 10篇
  • mongoDB 8篇
  • js 9篇
  • 微信小程序 1篇
  • pi开发 1篇
  • ruoyi 2篇
  • mysql练习题 5篇
  • layui 3篇
  • excel 1篇
  • leetcode刷题 1篇

最新评论

  • 深分页问题,limit 1000000,10 加载很慢该怎么优化

    eeeepiphany: 关于你说的优化方式中的第二条:'''通过 order by+索引来解决select id,name from user order by id limit1000000,10 需要注意 id 是索引列,通过索引排序后再 limit,同样减少了计算次数'''。请问这里的 '''通过索引排序后再 limit,同样减少了计算次数''' 是如何实现的。我理解的是:如果不加 order by,即执行 select id,name from user limit1000000,10; 则引擎层会返回第一个条数据给server层,server 层通过 limit_count 变量来判断这是否是第 1000000 条数据,不是就会让引擎层返回吓一跳数据。依次进行判断...。而如果执行 select id,name from user order by id limit1000000,10 则 MySQL 会采用全表查询,查询结束后会在 filesort 中进行主键排序。排序后引擎层会返回第一个条数据给server层,server 层通过 limit_count 变量来判断这是否是第 1000000 条数据,不是就会让引擎层返回吓一跳数据。依次进行判断...。即加上 order by 主键还会多出一步(会在 filesort 中进行主键排序)。那你说的'''通过索引排序后再 limit,同样减少了计算次数'''是从何而来呢?

  • SpringCloudGateway的网关登录校验

    hello97_db: 完整黑马程序员

  • 消息推送中的已读消息和未读消息设计难题

    AzumaTokaku.Cqy: 方案一首先得保证消息ID全局唯一且保持递增趋势,但如果用户阅读消息不是按顺序阅读,会出现已读未读展示

  • redis的repl_backlog原理

    m0_71223228: 为什么覆盖了slave的offset就没有了

  • Spring Boot 启动时 “jar中没有主清单属性” 异常

    卡萨尔琪: 这些都有但是还没有主清单属性这么办。。。

最新文章

  • idea配置安卓环境
  • python可视化界面PySimpleGUI
  • flask全局异常捕获
2024
07月 2篇
06月 8篇
05月 2篇
04月 42篇
03月 43篇
02月 10篇
01月 7篇
2023年484篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家河南秋季商场美陈报价制作玻璃钢雕塑报价多少钱金昌城市玻璃钢雕塑多少钱通州区商场美陈公司江苏特色商场美陈厂家直销天津玻璃钢雕塑制作玻璃钢发光鲤鱼跃龙门雕塑天虹百货商场美陈玻璃钢民谷雕塑常州小鸡玻璃钢花盆阜阳玻璃钢雕塑设计南京通用玻璃钢雕塑报价德州花朵玻璃钢仿铜雕塑公司吕梁玻璃钢造型雕塑那曲商场美陈个性化玻璃钢雕塑厂家栖霞商场中秋美陈湖南玻璃钢彩绘雕塑价格黄石玻璃钢雕塑造型贴金附近玻璃钢彩绘雕塑厂家宿迁商场秋季美陈青岛家用玻璃钢雕塑摆件淄博周村玻璃钢花盆深圳欧式人物玻璃钢雕塑加工厂铜仁商场美陈雕塑厂家江门发光小品玻璃钢雕塑摆件儿童商场美陈方案玻璃钢蘑菇雕塑定制河南步行街玻璃钢雕塑销售厂家商场美陈装饰全集香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化