首页IT科技spring 的aop(Spring—Aop(1)暨初开博客感想)

spring 的aop(Spring—Aop(1)暨初开博客感想)

时间2025-06-14 16:41:21分类IT科技浏览4523
导读:终于拥有属于自己的博客了,记录一点心得体会吧,生活的后花园。...

终于拥有属于自己的博客了              ,记录一点心得体会吧                   ,生活的后花园              。

本人大二      ,双非本科在读                   。很早之前就想开博客了              ,这种想法在去年暑假                    ,也就是2022年的夏天尤为强烈      。当时爱上了算法      ,每天都要刷不少的题       ,虽然有的是看着大佬们的题解才拿到思路的                    ,但慢慢积累下来也养成了不少算法思维              。打开博客对我来说真不是一件容易的事情             ,不知道写什么       ,写出来的东西入不了大家的眼怎么办                    ,单纯浪费了时间怎么办...当时啊想了很多劝自己打消开博的念头             ,但直到现在,我才发现                    ,如果能把当时记录下来                   ,如今的我可以说是拥有一笔不小的财富了                    。现在又是一次机会了,还是抓住吧      。这边就记录一点平时的学习心得和一些感悟吧              ,便于自己及时总结归纳                   ,时不时也能写一些生活碎片      ,计划是每天晚上写一点              ,没有意外的每天都会有                    ,欢迎技术交流!

最近在学习Spring      ,前几天都是混乱的       ,学一会歇一会                    ,没有很强的连贯性       。现在事情都忙完了             ,终于有时间空下来定心学习了                    。前面学习中       ,首先了解到了Spring的优点                    ,在开发中能做到充分解耦             ,简化开发,同时提供大量的开发工具             。目前学完了Spring的核心容器部分                    ,包括有IoC(控制反转)和DI(依赖注入)                   ,Bean的配置文件装配和注解开发,见识尚为短浅              ,学无止境                   ,虚心向前       。下面来整理一下今天学到的AOP(面向切面编程)                    。

什么是AOP?

我的理解是      ,AOP是将一个共同的功能抽取出来              ,然后分配给需要他们的方法                    ,在不惊动原有的设计的情况下      ,实现功能的修改             。在面向对象的编程中       ,我们需要为某个事务编写方法时                    ,一般都会需要什么写什么             ,对于完全不同的事务来说       ,效率很高                    ,然而如果遇到有共性的事务时             ,操作就变得麻烦了起来。要对每一种事务都书写相同的方法,即使怎么熟练ctrl+cv开发                    ,都会被这复杂的步骤折服                    。而AOP则解决了这一办法                   ,例如在每次查找操作后记录操作者,操作的对象              ,操作的时间...就可以将其单独写为一个方法                   ,在AOP中      ,这种方法称为通知                   。它将互通的代码抽取出              ,在程序运行是将其分散到需要执行的地方。区别于继承的地方在于                    ,该过程是一种采取横向抽取机制的方式      ,而继承采取的是纵向的方式              。生动点       ,或许可以比作一个家族                    ,从爷爷到儿子到孙子             ,他们都继承这这个家族的Y染色体       ,一脉相承                    ,这就是继承             ,而AOP实现的就是X染色体的发放,例如这个爷爷有3个儿子                    ,那么无论如何                   ,奶奶的X染色体都会发放给他们的3个儿子,这比喻应该够生动了吧!这样一来              ,AOP是什么就清楚了                   ,要知道的是它能提高开发效率      ,增强代码的可维护性(如果要修改方法              ,很简单                    ,修改通知即可)      ,这是它成为Spring的核心思想之一的重要原因!

AOP有什么?

在大致知道AOP负什么责任之后       ,有必要来了解一下AOP里面有什么                   。

切面(Aspect):既然被称为面向切面编程                    ,切面的定义尤为重要      。切面是指封装的用于横向插入的类              。在配置文件中使用<bean>元素指定后             ,方可被Spring容器识别                    。 连接点(JointPoint):是指在程序执行过程中的某个阶段点      。 切入点(PointCut):是指切面和程序的交叉点       ,书中描述为需要处理的连接点       。切入点指的是类或者方法名                    ,例如应用通知到所有的含有select的方法中时             ,满足该规则的方法都是切入点                    。 通知增强处理(Advice):AOP在特定的切入点执行增强的处理,在定义好切入点的地方所要执行的代码             。可以理解为切面类中的方法       。 目标对象(Target Object):指所有被通知到的对象                    ,他们有被增强的功能可以实现!(AOP核心概念) 代理(Proxy):将通知应用到目标对象后                   ,被动态创建的对象                    。(AOP核心概念) 织入(Weaving):将切面代码插入到目标对象上,从而生产代理对象的过程             。

AOP的工作流程是什么?

Spring容器的启动 读取所有切面配置中的切入点 初始化bean              ,判定bean对应的类中的方法是否匹配到任意的切入点

  匹配失败则创建一个新对象

  匹配成功                   ,则创建原始对象(目标对象)的代理对象(织入)

获取bean执行方法

  获取bean      ,调用方法并执行              ,完成操作。

  获取的bean是代理对象时                    ,根据代理对象的运行模式运行原始方法与增强的内容      ,便完成了操作

Spring中AOP的本质是什么:代理模

在main函数中运行如下代码(AOP配置已完成)       ,查看此时目标对象的class                    。

在main函数中运行如下代码(AOP配置已完成)                    ,查看此时目标对象的class                   。可以发现最终用的是代理对象。(在AOP中对最终的对象的toString方法进行了重写             ,所以会看到第三行的内容)              。

AOP切入点表达式

切入点:要增强的方法

切入点表达式:要增强的方法的描述方式

描述方式一:执行xx包下的xx接口中的无参数方法

描述方式二:执行xx.impl包下的xx类中的无参数方法

格式:动作关键词(访问修饰符号 返回值 包名.类/接口.方法名(参数)异常名)

声明:本站所有文章       ,如无特殊说明或标注                    ,均为本站原创发布                   。任何个人或组织             ,在未征得本站同意时,禁止复制              、盗用                   、采集      、发布本站内容到任何网站              、书籍等各类媒体平台      。如若本站内容侵犯了原著者的合法权益                    ,可联系我们进行处理              。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
蚌埠搜狐焦点(蚌埠门户网) 文章生成器在线使用(文章生成器免费版在线-轻松生成高质量文章)