栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

AOP相关概念与开发明确事项

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AOP相关概念与开发明确事项

AOP相关概念

Spring的AOP实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需要对需要关注的部分进行代码编写,并通过配置的方式完成指定目标的方法增强。

在正式讲解AOP的操作之前,我们必须理解AOP的相关术语,常用的术语如下:

  • Target (目标对象) :代理的目标对象
  • Proxy (代理) :一个类被AOP织入增强后,就产生个结果代理类。之前使用动态生成代理对象对目标方法进行增强
  • Joinpoint (连接点) :所谓连接点是指那些被拦截到的点(方法)。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点。
    • 点:等同于方法
    • 连接点就是可以被增强的方法
  • Pointcut (切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义。
    • 简称为切点,切点就是对那些连接点进行配置了,或者说这个切入点真正被增强了,也就是真正被配置增强了,这些连接点就是切入点。
    • 打个比方:公民都有机会成为人大代表,但是我们目前不是人大代表,此时我们就是连接点;当我们真正被选为人大代表就变成切点了
    • 连接点的范围比切点大,切点是连接点的一部分
  • Advice (通知/ 增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知。
    • 也就是增强逻辑,这些增强逻辑被要放在方法当中,而这个方法就叫做通知/增强
  • Aspect (切面):是切入点和通知(引介)的结合
    • 之前是说目标方法加增强就称为切面,而术语就是切点加通知就是切面
  • Weaving (织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectU采用编译期织入和类装载期织入。
    • 简单来说,就是将你的切点跟你的增强/通知,结合的过程,就可以认为是一个织入过程。
AOP开发明确的事项

1.需要编写的内容

  • 编写核心业务代码(目标类的目标方法)
  • 编写切面类,面类中有通知(增强功能方法)
  • 在配置文件中,配置织入关系,即将哪些通知与哪些连接点进行结合

2.AOP技术实现的内容

Spring框架监控切入方法的执行。一旦监控到切入点方法被运行,使用代理机制,动态创建目标对象的代理对象,根据通知类别,在代理对象的对应位置,将通知对应的功能织入,完成完整的代码逻辑运行。

  • 切点需要进行配置,通过配置文件指定哪些方法是切点。
  • 当在执行或调用那些方法时,说明这个切入点配置的那些切点其中的某一个方法执行了,一执行spring就监控到了。
  • 一旦监控到切入点方法被运行,使用代理机制,动态创建这个切点的方法所在的目标对象的代理对象。
  • 创建代理对象过后,会根据你配置的增强类型或者是通知的类型,在代理对象对应的位置帮你再执行那个目标方法时,进行一个相应的增强方法织入

3.AOP底层使用哪种代理方式

在spring中,框架会根据目标类否实现了接口来决定采用哪种动态代理的方式。

  • 有接口就使用jdk的那种
  • 没有接口就使用cglib这种
  • 会自动判断
知识要点
  • aop:面向切面编程
  • aop底层实现:基基JDK的动态代理和基于Cglib的动态代理
  • aop的重点概念:
    • Pointcut (切入点) :被增强的方法
    • Advice (通知/增强) :封装增强业务逻辑的方法
    • Aspect (切面) :切点+通知
    • Weaving (织入) :将切点与知结合的过程
  • 开发明确事项:
    • 谁是切点(切点表达式配置)
    • 谁是通知(切面类中的增强方法)
    • 将切点和通知进行织入配置
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/284697.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号