AOP【面向切面编程】「建议收藏」

AOP【面向切面编程】「建议收藏」文章目录AOP介绍AOP术语AOP的实现方式AOP介绍AOP(AspectOrientedProgramming),即面向切面编程,可以说是OOP(ObjectOrientedProgramming),面向对象编程的补充和完善。  面向切面编程是面向对象中的一种方式而已。在代码执行过程中,动态嵌入其他代码,叫做面向切面编程。常见的使用场景:日志事物数据库操作面向切面编程,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

AOP介绍

AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming),面向对象编程的补充和完善。
  面向切面编程是面向对象中的一种方式而已。在代码执行过程中,动态嵌入其他代码,叫做面向切面编程。常见的使用场景:

  1. 日志
  2. 事物
  3. 数据库操作

面向切面编程,就是将交叉业务逻辑封装成切面,利用AOP的功能将切面织入到主业务逻辑中。所谓交叉业务逻辑是指,通用的,与主业务逻辑无关的代码,如安全检查,事物,日志等。若不使用AOP,则会出现代码纠缠,即交叉业务逻辑与主业务逻辑混合在一起。这样,会使业务逻辑变得混杂不清。
举个例子:银行系统取款会有一个流程查询也会有一个流程
在这里插入图片描述
这两者,都有一个相同的验证用户的流程
  这个时候 AOP 就可以来帮我们简化代码了,首先,写代码的时候可以不写这个验证用户的步骤,即完全不考虑验证用户,写完之后,在另外一个地方,写好验证用户的代码,然后告诉 Spring 你要把这一段代码加到哪几个地方,Spring就会帮你加过去,这里还只是两个地方,如果有多个控制流,这样写代码会大大节约时间。
  而且 AOP 不会把代码加到源文件里,但是它会正确的影响最终的机器代码。
  
上面那个 验证用户 的方框,我们可以把它当成一块板子,在这块板子上插入一些控制流程,这块板子就可以当成是 AOP 中的一个切面。所以 AOP 的本质是在一系列的纵向的控制流程中,把那些相同的子流程提取成一个横向的面,把纵向流程画成一条直线,而 AOP 相当于把相同的地方连起来了

再来一幅图理解一下:
在这里插入图片描述
这个验证用户的子流程 就成了一条直线,也可以理解成一个切面,这里只插了三个流程,如果其他流程也需要这个子流程,也可以插到其他地方去。

AOP术语

术语 说明
切面 切面泛指交叉业务逻辑。比如事物处理,日志处理就可以理解为切面。常用的切面有通知与顾问。实际就是对主业务逻辑的一种增强
织入 织入是指将切面代码插入到目标对象的过程
连接点 连接点指切面可以织入的位置
切入点 切入点指切面具体织入的位置
通知 通知(Advice)是切面的一种实现,可以完成简单织入功能(织入功能就是在这里完成的)。通知定义了增强代码切入到目标代码的时间点,是目标方法执行之前执行,还是之后执行等。通知类型不同,切入时间不同。
顾问 顾问(Advisor)是切面的另一种实现,能够将通知以更为复杂的方式织入到目标对象中,是将通知包装为更复杂切面的装配器。不仅指定了切入时间点,还可以指定具体的切入点。

AOP的实现方式

通知类型 说明
前置通知(MethodBeforeAdvice) 目标方法执行之前调用
后置通知(AfterReturningAdvice) 目标方法执行完成之后调用
环绕通知(MethodInterceptor) 目标方法执行前后都会调用方法,且能增强结果
异常处理通知(ThrowsAdvice) 目标方法出现异常调用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213397.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 史上最全的Uboot常用命令汇总(超全面!超详细!)收藏这一篇就够了「建议收藏」

    史上最全的Uboot常用命令汇总(超全面!超详细!)收藏这一篇就够了「建议收藏」Linux系统要启动就必须需要一个bootloader程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NORFLASH,SD,MMC等)拷贝到DDR中,最后启动Linux内核。当然了,bootloader的实际工作要复杂的多,但是它最主要的工作就是启动Linux内核,bootloader和Linux内核的关系就跟PC上的BIOS和Windows的

    2022年6月23日
    131
  • 死链接检测 java,【死链接检测】工具查询方法及死链接处理方法

    死链接检测 java,【死链接检测】工具查询方法及死链接处理方法【死链接检测】工具查询方法及死链接处理方法死链接不但影响用户的体验,而且影响网站的跳出率,网站的跳出率直接关系到网站的排名。网站死链接量达到一定的程度,甚至网站会降权或者被K站,站长们应改高度的重视。死链接404页面1.网站死连接的查找。在360浏览器里——找到扩展——查找输入死链接,安装好插件。安装好以后,浏览器的上面就有一个这样的图标。打开你的网站,点击网页链接检查。出现下面的图片。然后收集死…

    2022年7月22日
    10
  • 欧拉筛法(线性筛)的学习理解

    前言在刚接触编程语言时,对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期。在数论的学习中,我学到了埃氏筛法,O(nloglogn)的算法,而在一些数据范围达到1e7这样的题目中,也很难让人满意,于是我便学习了欧拉筛法,也即O(n)的线性筛法。埃氏筛法埃氏筛法的基本思想:从2开始,将每个质数的倍数都…

    2022年4月5日
    74
  • python3.x默认使用UTF-8编码_pycharm怎么debug

    python3.x默认使用UTF-8编码_pycharm怎么debugpycharm设置默认的UTF-8编码模式!

    2022年8月29日
    4
  • 标准网页两侧浮动广告代码,支持FF及IE

    标准网页两侧浮动广告代码,支持FF及IE点击这里使用RSS订阅本Blog:网页两侧浮动广告代码经测试支持IE、Firefox等浏览器符合标准的正常工作的对联广告lastScrollY=0;functionheartBeat(){vardiffY;if(doc

    2022年9月20日
    2
  • poe交换机可以当普通交换机吗?-芝士回答_poe交换机和poe交换机对接

    poe交换机可以当普通交换机吗?-芝士回答_poe交换机和poe交换机对接PoE交换机是一种新型的多功能交换机,很多人认为PoE交换机可以自行发电,这种说法并不正确,通常所讲的PoE交换机供电指的是PoE交换机通过网线来给其他设备供电,与此同时也不丢失传输数据的功能。那么,PoE交换机和普通交换机又有什么区别呢?可以将PoE交换机当做普通的交换机来使用吗?本文将为您揭晓这两个问题的答案。PoE交换机和普通交换机的区别PoE交换机和普通交换机都是可以传输数据的网络设备,但两者之间又有什么差别呢?下文会将PoE交换机和普通交换机进行对比,以便能够帮助您更加深入的了解二者之间的

    2022年10月5日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号