为了账号安全,请及时绑定邮箱和手机立即绑定

为什么after会在afterReturn之前?

老师,你好,为什么本节视频的after会在afterReturn之前?参考本节(5-5)的05:08(5分08秒)处。

而上节视频的after会在afterReturn之后,参考上节(5-4)的13:36(13分36秒)处。

正在回答

6 回答

使用注解时跟配置顺序无关,跟around无关。

使用配置进行编译时跟around有关,跟配置顺序也有关系。

0 回复 有任何疑惑可以回复我~

Spring官方的说法是,在同一个切面内,同类型(前/后)的通知顺序是不确定的。因为通过反射确定类中生命(这句话的意思,我也不理解)。

见官方文档说明(同时给出了排序的建议):

When two pieces of advice defined in the same aspect both need to run at the same join point, the ordering is undefined (since there is no way to retrieve the declaration order via reflection for javac-compiled classes). Consider collapsing such advice methods into one advice method per join point in each aspect class, or refactor the pieces of advice into separate aspect classes - which can be ordered at the aspect level.

0 回复 有任何疑惑可以回复我~
#1

精慕门1546425

确定类中生命=确定类中声明顺序
2018-07-20 回复 有任何疑惑可以回复我~

我认为,after是在目标方法的执行结束的前一刻产生效果,而afterreturning是在目标方法已经结束时产生效果,所以after才会比afterreturning先输出

0 回复 有任何疑惑可以回复我~
#1

稻子凡

哈 错了 当有配置around时,after和after-returning的执行顺序和它们在xml文件中配置顺序相反。
2017-09-04 回复 有任何疑惑可以回复我~

试了一下,跟xml配置顺序没有关系,只跟有没有配置around有关

1 回复 有任何疑惑可以回复我~
#1

qq_幸福客_0

我错了,跟配置顺序还是有关系的
2017-02-13 回复 有任何疑惑可以回复我~

当有配置around时,after和after-returning的执行顺序和它们在xml文件中配置顺序相反。

6 回复 有任何疑惑可以回复我~

与after和afterReturning的在配置文件的位置有关

0 回复 有任何疑惑可以回复我~
#1

战神无敌冲

我测试了一下,不是这个原因
2016-08-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么after会在afterReturn之前?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信