AOP基本概念及特点

1 篇文章 0 订阅
订阅专栏

目录

什么是AOP

AOP几个相关概念

通知Advice类型

Spring框架中的AOP的用途

Spring的AOP实现

有接口和无接口的Spring AOP实现区别

预编译、运行期代理底层原理


  • 什么是AOP

AOP: Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译运行期动态代理的方式实现程序功能的统一维护的一种技术。

主要功能:日志记录、性能统计、安全控制、事物管理、异常处理等。

实现方式:

(1)预编译——AspectJ

(2)运行期动态代理(JDK动态代理、CGLib动态代理)——SpringAOP、JbossAOP

 

  • AOP几个相关概念

切面(Aspect ):一个关注点的模块化,这个关注点可能会横切多个对象

连接点(Joinpoint):程序执行过程中的某个特定的点

通知(Advice):在切面的某个特定的连接点上执行的动作。通知分为:前置通知、后置通知、异常通知、最终通知、环绕通知(切面要完成的功能)。

切入点(Pointcut):匹配连接点的断言,在AOP中通知和一个切入点表达式关联

引入(Introduction):在不修改类代码的前提下,为类添加新的方法和属性

目标对象(Target Object):被一个或者多个切面所通知的对象

AOP代理(AOP Proxy):AOP框架所创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)

织入(Weaving):把切面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象,分为:编译时织入、类加载时织入、执行时织入

目标对象(Target):代理的目标对象

代理(Proxy):一个类被AOP织入增强后,就产生一个结果代理类

  • 通知Advice类型

前置通知(Before Advice):在某个连接点之前执行的通知,但不能阻止连接点前的执行(除非它抛出一个异常)

前置通知(After returning Advice):在某个连接点正常完成后执行的通知

异常通知(After throwing advice):在方法抛出异常退出时执行的通知

最终通知(After(finally) advice):当某个连接点退出的时候执行的通知(不论是正常返回还是异常退出)

环绕通知(Around advice):包围一个连接点的通知

  • Spring框架中的AOP的用途

(1)提供了声明式的企业服务,特别是EJB的替代服务的声明

(2)允许用户定制自己的方面,以完成OOP与AOP的互补使用

什么是声明式?

声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

  • Spring的AOP实现

1)纯java实现,无需特殊的编译过程,不需要控制类加载器的层次

2)目前只支持方法执行连接点(通知Spring Bean的方法执行)

3)并没有提供最完整的AOP实现,而是侧重于提供一种AOP实现和Spring IOC容器之间的整合,用于帮助解决企业应用中的常见问题

4)Spring AOP支持AspectJ,从而提供综合全面的AOP解决方案

注:AspectJ提供了全面的AOP实现,较传统AOP开发灵活很多,实际开发中推荐使用AspectJ AOP。

  • 有接口和无接口的Spring AOP实现区别

1)有接口,Spring AOP默认使用标准的JavaSE动态代理作为AOP代理,这使得任何接口(或者接口集)都可以被代理

2)无接口,Spring AOP中也可以使用CGLIB代理(如果一个业务对象并没有实现一个接口)

  • 预编译、运行期代理底层原理

在Spring 中,引入了AspectJ的语法,他本质上使用的是动态代理的方式。

动态代理,分两种实现模式:

1.使用接口(动态代理)

如果被代理的对象是面向接口编程的,那么Spring直接使用实现这些接口,然后把需要插入的内容在这个接口上下文中插入

2.使用继承(CGLIB)

如果被代理的对象没有基于接口编程,那么Spring会调用cglib库,通过子类继承的方式,动态插入需要的内容,并且调用父类的方法实现。

cglib内部拥有一个小的字节码处理框架asm,来转换字节码生成新的类.所以spring调用了cglib,相当于生成了一个被代理对象的子类,来取代被代理对象

Spring AOP 基础概念
jason559的博客
01-23 173
目录一、AOP 相关概念1、什么是 AOP?2、AOP在解决什么问题?3、为什么叫做面向切面编程?二、Spring AOP 相关概念1、AOP本质:2、AOP 术语:3、Spring 中 AOP 的代理选择: 一、AOP 相关概念 1、什么是 AOPAOP:Aspect oriented Programming 面向切面编程/面向方面编程。 AOP 是 OOP 的延续,从 OOP 说起。 OOP:Object Oriented Programming 面向对象程序设计。 OOP 三大特征:封装、继承和多
AOP-2 AOP基本概念
诗人不写诗
05-07 629
对于切面使用者来说,需要关心的就是Pointcut和Advice,Pointcut扫描出所有要处理的地方,Advice定义切入逻辑,这2个就可以满足几乎所有切面使用者的需求。其他的概念几乎都是实现层面的概念,是深入理解切面才需要了解的。
Spring 的IOC和AOP特点
09-15
Spring的核心:IOC与AOP。IOC是控制反转或依赖注入,AOP是面向切面编程。
Spring 中AOP 特性详解
yuanlanjun
04-30 179
Spring 框架的设计理念与设计模式分析--- Spring中AOP 特性详解 动态代理的实现原理 要了解 Spring 的 AOP 就必须先了解的动态代理的原理,因为 AOP 就是基于动态代理实现的。动态代理还要从 JDK 本身说起。 在 Jdk 的 java.lang.reflect 包下有个 Proxy 类,它正是构造代理类的入口。这个类的结构入下: 图 ...
【JAVA基础】AOP详解
最新发布
qq_54065582的博客
08-05 1118
AOP(Aspect OrientedProgramming):面向切面编程,面向切面编程(也叫面向方面编程),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
5-1 AOP基本概念特点
Torey_Li的博客
09-01 439
AOP几个相关概念 名称 说明 切面(Aspect) 一个关注点的模块化,这个关注点可能会横切多个对象 连接点(Joinpoint) 程序执行过程中的某个特定的点 通知(Advice) 在切面的某个特定的连接点上执行的动作 切入点(Pointcut) 匹配连接点的断言,在AOP中通知和一个切入切入点表达式关联 引入(Introduction) 在不修改类代码的前提下...
Spring中的AOP的特性详解。
孤芳不自赏
08-16 2402
动态代理的实现原理 要了解Spring的AOP就必须先了解动态代理的原理,因为AOP就是基于动态代理实现的。动态代理要从JDK本身说起。 在JDK的java.lang.reflect包下有个Proxy类,他正是构造代理类的入口。 该类有一个方法newProxyInstance就是创建代理对象的方法。 这个方法需要3个参数:ClassLoader,用来加载代理类的Loader类,通常这个Lo...
AOP的主要概念和术语
Tomson Xu
04-24 2922
 ====关注点(Concern)====关注点就是我们要考察或解决的问题。如订单的处理,用户的验证、用户日志记录等都属于关注点。 关注点中的核心关注点(Core Concerns),是指系统中的核心功能,即真正的商业逻辑。如在一个电子商务系统中,订单处理、客户管理、库存及物流管理都是属于系统中的核心关注点。 还有一种关注点叫横切关注点 (Crosscutting Co
Spring AOP面向方面编程原理:AOP概念
11-21
#### 二、AOP基本概念 AOP是一种编程范式,其目的是提高模块化程度,特别是将那些对很多类都具有影响的公共行为封装起来,以便减少系统的耦合度,并且增加可重用性。Spring AOP是在Spring框架的基础上实现的一种面向...
spring入门学习-5、AOP概念及特点.pdf
02-17
### Spring AOP 概念及特点详解 #### 一、AOP 概念介绍 **AOP**(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在提高程序模块化程度的同时,简化复杂系统的开发过程。AOP 的核心思想是将横切...
Spring IOC AOP常见的面试题及概念
qq_43012792的博客
09-12 8804
本篇部分内容来源于网络,加上个人总结归纳,另外加上一些自己的见解,于是本篇文章诞生。感谢部分内容的提供者。 1、 Spring的 IOC和AOP机制 ? (1)我们是在使用 Spring框架的过程中,其实就是为了使用 IOC(控制反转)、依赖注入(DI与IOC一样)和AOP(面向切面编程),这两个也是 Spring 的灵魂。 (2)主要用到的设计模式有工厂模式和代理模式 IOC就是典型的工厂模式,AOP就是典型的代理模式的体现。 代理模式是常用的Java设计模式,他的特征是代理类与委托类有同样的接口,代理
spring入门学习-5、AOP概念及特点
u013424033的博客
12-07 565
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。 在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面)。 AOP利用称为“横切”的技术剖解开封装的对象内部,并将那些影响了多个类的公共行为封...
Spring之AOP基本概念特点
夏季版
12-05 3056
总体来说,AOP是一种面向切面的编程方式,其中实现AOP有两种方式,一种是spring AOP,一种是AspectJ。 AOP中一共有8个基本概念,其中Adice类型中有四种不同的通知类型1、什么是AOP: 2、什么是切面: 3、AOP实现的方式: 4、AOP的几个相关概念: 5、Advice的类型:
AOP相关概念
weixin_43448411的博客
01-17 493
实训不知道第几天。 AOP 1.AOP : 面向切面编程, 面向方面编程, aop是oop(面向对象编程)的延续. aop采用的是横向抽取机制, 代替了传统的纵向继承机制, 使得业务逻辑各部分之间耦合度降低, 提高代码的重用性, 同时提高了开发效率. AOP相关的概念 1) Aspect :切面,切入系统的一个切面。比如事务管理是一个切面,权限管理也是一个切面; 2) Join point :连接点,也就是可以进行横向切入的位置; 3) Advice :通知,切面在某个连接点执行的操作(分为: Befor
Spring第二大特性:AOP
m0_53151031的博客
10-25 230
目录 一、AOP的介绍 二、前置通知 三、后置通知 四、环绕通知 五、异常通知 六、过滤通知 一、AOP的介绍 1、定义:AOP是Spring的第二大特性,AOP是面向切面编程,是面向对象开发的一种补充,它允许开发人员在不改变原来模型的以满足新的需求。 2、AOP的关键性概念: ①、连接点(Joinpoint):程序执行过程中明确的点,如方法的调用,或者异常的抛出. ...
spring心得7--spring第二大特点AOP(面向切面)讲解
weixin_30772261的博客
05-07 93
本篇博客重点讲解AOP的概念和知识点的介绍,下一篇博客重点通过案例和注释来分析讲解spring aop的通知等概念 1.定义AOP术语 1).切面(aspect):要实现的交叉功能,是系统模块化的一个切面或领域。如日志记录、事务处理、安全机制操作。 2).连接点:应用程序执行过程中插入切面的地点,可以是方法调用,异常抛出,或者要修改的字段。 3).通知...
AOP中重要概念
weixin_30871905的博客
04-10 301
Aop底层使用就是动态代理技术。   通知(advice):除了目标方法执行之外的操作都称为通知。比如:事务通知,记录目标方法执行时长的通知。通知一般由开发者开发。   切入点(pointcut):指定项目中的哪些类中的哪些方法应用通知,切入点是配置得到的。   切面(aspect):通知+切入点。 AOP的编程步骤: 1.引入jar包   Spring-aop 依赖于spring-e...
Spring的AOP特性
weixin_30832983的博客
04-05 194
一、AOP简介    AOP是Aspect-Oriented Programming的缩写,即面向切面编程。利用oop思想,可以很好的处理业务流程,但是不能把系统中某些特定的重复性行为封装到模块中。例如,在很多业务中都需要记录操作日志,结果我们不得不在业务流程中嵌入大量的日志记录代码。无论是对业务代码还是对日志记录代码来说,维护都是相当复杂的。由于系统中嵌入了这种大量的与业务无关的其他重复性代码...
AOP常用概念
qq_40392686的博客
10-05 140
面向切面编程是什么? 在程序原有纵向执行流程中,针对某一个或某一些方法添加通知,形成切面的过程就叫做面向切面编程。 原有功能:切点,pointcut 前置通知:在切点之前执行的功能,before advice 后置通知:在切点之后执行的功能,after advice 如果切点的执行过程中,会出发异常通知,throws advice 所有功能总称叫切面 织入:吧切面嵌入到原有的功能的过程j ...
深入理解Spring AOP与分布式系统概念
理解分布式系统的关键在于掌握其基本特征,包括但不限于:透明性(如位置透明、复制透明等)、并发性、容错性、数据分布和一致性。分布式系统的目标是提供高可用性、可扩展性和性能优化。然而,实现这些目标的同时,...
写文章

热门文章

  • 为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别? 10062
  • 分页查询时,把数据保存在session中,在点击下一页的时候取不到session中的值 3552
  • 如何用eclipse手动创建动态web项目的xml配置文件及创建动态web项目时一同创建xml配置文件 2970
  • AOP基本概念及特点 2060
  • StringBuffer与StringBuilder常用方法 1322

分类专栏

  • web学习中遇到的一些问题 3篇
  • 面试中常见的一些问题
  • 面试题答案 4篇
  • Java基础 1篇
  • Spring 1篇
  • 软件安全处理

最新评论

  • 为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?

    UESTCrookie: 傻狗学会了吗

  • 为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?

    打球唔叻。: star()方法准备线程启动的相关工作,RUNNABLE状态下的Thread对象会新建一个线程,自动执行run()方法。然而,如果直接Thread对象调用run()方法,JVM只会将其当作是main函数下的一个普通函数来执行,并不会新建一个线程运行线程执行体(即run()方法)的内容。

  • 为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?

    柏拉土豆: 正解!利用的是jvm的反射,start调用后通过底层jvm回调run方法

  • 为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?

    此账号已冻结 回复 习惯沉淀: 像他这样的人就该让他活在自己的世界里,他根本不是来学知识的,他只是来找存在感的

  • 为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?

    习惯沉淀 回复 jefflike: 呵、

大家在看

  • 高通SA8295 Hexagon DSP的应用与调试:优化图像处理性能的实战指南
  • 分治算法之Karatsuba算法详细解读(附带Java代码解读) 843
  • 【算法题】63. 不同路径 II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“ 1
  • 标注XML文件转为YOLOtxt文件
  • 算法工程师重生之第十一天(二叉树理论基础 递归遍历 迭代遍历 统一迭代 层序遍历) 666

最新文章

  • Spring - 基础篇
  • 为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?
  • java中sleep( )和wait( )的区别
2019年2篇
2017年8篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为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 网站制作 网站优化