编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

spring如何让我们的拦截器顺序放最后执行#java

wxchong 2025-07-24 22:43:13 开源技术 8 ℃ 0 评论

如何让我们在SpringBoot中定义的切面在最后执行?如何让我们的拦截器顺序排到最后执行?看似简单的问题,实际上有一定的技巧,让我们一起来看看视频最后的解答吧。

考虑一个场景,我们需要实现一个开源的工具包,对所有SpringBoot的RESTful API接口进行切面处理,并判断返回结果。如果返回结果包含code属性,且code属性值为203,则发出告警通知。由于工具类的实现必须严谨,我们需要确保切面在业务定义的切面都处理之后再执行。

处理这个问题时,有些人可能会想到在切面列上添加Order注解,但遗憾的是,Order注解默认值为Integer的最大值,无法将切面顺序向后移动。此外,当@Order值大小相同时,Spring会按照类的名称字典顺序开始执行。

因此,我们可以使用最大的Z字母开头的切面类。但是,如果业务也定义了一个以ZZ开头的切面,那么业务定义的切面就会在工具类之后执行,这并不符合要求。因此,我们需要回顾一下Java的命名规范,即字母下划线、美元符号和数字开头。

在Java中,标识符大小写敏感,长度无限制。经过比较,我们发现下划线是最大的,因此我们可以使用以下划线开头的奇怪字母作为工具类的名称。前提是业务定义的切面不要以下划线开头。

如果您有更好的解决方案,请在评论区留言。如果没有,请记得点赞、收藏!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表