关于RequestParam在不同的Spring版本上,接口在controller重载时注解可能失效的踩坑记录
先抛背景:
我项目中的Spring版本是2.0.3.RELEASE。
api-demo负责暴露接口,service-demo负责实现功能。接口参数的@RequestParam
和@RequestBody
等大部分都是api和service各注一份。
最近项目重构升级版本的时候,前端报过来有的参数突然多了require
效果,检查代码时没找到更改记录,懵逼了很久。发现这个接口的controller没有标@RequestParam
注解,考虑从这里入手。
后来写demo项目验证的时候发现spring版本不同的情况下,注解生效的效果是不同的。在2.2.4.RELEASE中如果API中定义了这个参数是@RequestParam
,那么Controller继承后会同时继承@RequestParam
,在2.0.3.RELEASE中如果API中定义了这个参数是@RequestParam
,那么Controller不会继承@RequestParam
。