U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 常见问题解答 >

【349期】面试官问:Spring Aop 常见注解和执行顺序?

来源:http://www.tudoupe.com时间:2022-07-19

首先,让我们看一下 Spring Aop中常见的一些评论:

  • @Before预置通知:目标方法的预执行

  • @After替换通知:执行目标方法后(持续执行)

  • @AfterReturning返回后通知:执行方法结束前执行(不执行除外)

  • @AfterThrowing异常通知:气味异常后执行

  • @Around环绕通知书:环绕方法的执行


常见问题


1、你肯定知道 Spring  , 那说说 Aop 的去全部通知顺序, Spring Boot 或者 Spring Boot 2 对 aop 的执行顺序影响?

告诉我你在AOP中遇到的坑 pits 吗?

示例代码


下面我们先快速构建一个 spring aop 的 demo 程序来一起讨论 spring aop 中的一些细节。


配置文件

为了方便我直接使用 spring-boot 进行快速的项目搭建,大家可以使用 idea 的spring-boot 项目快速创建功能,或者去 start.spring.io进入顶部,快速创建一个弹簧启动应用程序。

因为我经常手贴在互联网上一些依赖性会导致依赖服务启动失败等。

接口类


首先我们需要定义一个接口,这里我们可以回到JDK默认代理实现的选择:

  • 如果目标对象实现接口,默认是使用JDK动态代理

  • 如果目标对象没有实现接口,则使用动态代理

  • 如果目标对象实现接口并强制执行cglib,则使用cglib代理

这块的逻辑在DefaultAopProxyFactory任何有兴趣的人都可以去看看。


实现类

这里我的门只是简单的脱耦操作,可以模拟正常和很容易模拟误差。


aop 拦截器


声明要添加 @Aspect 和 @Component 到当前对象的拦截器,作者已经进入这样的洞穴,仅增加了一个洞穴。

事实上,我一开始并没有真正理解它,但当我看看“视角注释”的定义时,我明白了

5d256794c1282f437eab4583d0b87963.jpeg

这里面根本就没有 Bean 的定义。所以我们还是乖乖的加上两个注解。java面试宝典:https://www.yoodb.com 即将上线,免费刷题。

此外,如果您需要在测试时打开Op支持,请将其添加到配置类@EnableAspectJAutoProxy注解。

事实上,op有三个步骤:

  • 定义视角定义切削

  • 定义切点是我们切点的定义

  • 定义具体的通知, 例如: @After, @Before, 等等.


测试类


其实我这个测试类,虽然用了 @Test 注解,但是我这个类更加像一个 main 方法把:如下所示:

outside_default.png

执行结论


结果记录:spring 4.x, spring-boot 1.5.9

现在你不能依靠它,所以你不能测试它

让我得出一个直接的结论:4月份的通告在大多数情况下执行

结果记录:spring 版本5.3.15 springboot 版本2.6.3

806a9e960b5b021f8cb10b024ba6b5e1.jpeg


多切面的情况


如图所示,在多个切削情况下,您可以通过@Order指定订单,数量越小,优先次序越高。

0eda6d9d8b28645b3c6831f930e4dd00.jpeg


代理失效场景


下面的场景将使aop代理失败,因为当我们执行方法时,它实际上是执行的AServer#a的方法拦截器(MethodInterceptor)链, 当我们在 a 方法内直接执行b(), 其实本质就相当于 this.b() , 这个时候由执行 a方法是调用到 a 的原始对象相当于是 this 调用,这会导致b()方法的代理失败。这个问题也是开发人员在开发过程中遇到的最常见的问题之一。

作者:心城以北

https://juejin.cn/post/7062506923194581029

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近,很多人问有读者交换组吗! 加入的方法很简单,公共代码Java选择,回答“添加组”,你就可以加入这个组!

Java选择面试问题(WeChat小程序):300+面试问题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

------ 特别推荐 ------

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。

如果这篇文章有帮助的话,请看一下并翻译一下!

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息