说实话,刚启动看 Spring MVC 那堆名词术语时,我就连有点头晕,认定那些接口和过滤器简直像是为了考试故意设置的拦路虎。但一旦真正站在 JDK 的运行台上,去敲下几个测试用例,那种震撼感反而扑面而来,仿佛把整个 Web 时代互联网背后的骨架都握在了手里。 大量人一上来就纠结如何搞 Controller,如何弄 ControllerAdvice 这种让人抓狂的方式。
实际上啊,最核心的那点逻辑忒好办了,就像个好办的函数调用。一个一般/平平的 Spring MVC 流程,本质上就是用户在浏览器敲个 URL,浏览器把这个请求发给 Spring 容器,容器把路由匹配到 Controller 方式,最终把数据塞进特定的 bean 对象里,再回给浏览器。整个过程就像是一个好办的“翻译”过程,只不过语言从 HTTP 请求转成了 JSON 数据,再从 JSON 转回了 HTTP 响应。 要是真细究起来,拆开来看才有多复杂。记得有个测试案例,我故意在 Controller 里加了几个条件判断,比如要是用户是管理员就放行,一般/平平人就回 403。结局发现,一般/平平的 Controller 参数彻底是一群瞎眼,参数名、类型(偶然是 Enum 枚举!)、取值范围就连省略号,全不管用。
这里有个细节挺好办被忽略:Spring 默认是把 Controller 的参数包装成一个 `ParameterizedMethod`,这个类内部有个 `Function