当前,Web领域朝着前后端分离的方向去发展,有人开始担心像Spring MVC这样前后端耦合较大的框架是否过时了?

前后端分离是指浏览器发送HTTP请求,服务器端经过一系列业务处理后返回Json格式的字符串给浏览器。而MVC模式是指浏览器发送请求,服务器端的Controller接受请求,经过一系列处理后生成Model,然后服务器端的模板引擎(JSP,Spring MVC等)把View和Model渲染成网页,发送给浏览器。

随着技术的发展和更替,MVC模式确实是过时了。Spring MVC 作为一个实现MVC模式的框架,提供的Map、Model、ModelAndView自然也就过时了。但是,借助Spring MVC的@RestController等,我们也可以实现一个前后端分离的网站。如下所示:

@RestController
@RequestMapping("books")
public class SimpleBookRestController {
    @GetMapping("/{id}", produces = "application/json")
    public Book getBook(@PathVariable int id) {
        return findBookById(id);
    }
 
    private Book findBookById(int id) {
        // ...
    }
}

前后端分离,没有JSP或其他服务器端模板引擎,只有HTTP上传输的JSON交互,那么必然用@RestController。

在前后端分离的开发模式下,服务端只需要把数据返回给客户端或前端,不再需要自己渲染视图、控制页面跳转逻辑,只返回Json数据即可。

这样一来,Spring MVC中的V就基本废了。再加上Spring Boot的封装,一个项目轻轻松松就搭建起来,Spring MVC确实显得没什么存在感了。

但是,只要做Web开发,就难免涉及到请求路径的解析、请求参数的封装、过滤器、拦截器、鉴权等等基础功能,这些都是Spring MVC提供的或者基于Spring MVC开发的。

毕竟作为经典MVC架构的优秀实践者,Spring MVC的设计有太多值得我们学习的。