1. 了解 MVC 模式
Spring Boot开发Web应用程序主要使用MVC模式。MVC是Model(模型)、View(视图)、 Controller (控制器)的简写。
● Model: 是Java的实体Bean, 代表存取数据的对象或POJO ( Plain Ordinary JavaObjects,简单的Java对象),也可以带有逻辑。其作用是在内存中暂时存储数据,并在数据变化时更新控制器(如果要持久化,则需要把它写入数据库或者磁盘文件中)。
● View: 主要用来解析、处理、显示内容,并进行模板的渲染。
● Controller: 主要用来处理视图中的响应。它决定如何调用Model (模型)的实体Bean、如何调用业务层的数据增加、删除、修改和查询等业务操作,以及如何将结果返给视图进行渲染。建议在控制器中尽量不放业务逻辑代码。
这样分层的好处是:将应用程序的用户界面和业务逻辑分离,使得代码具备良好的可扩展性、可复用性、可维护性和灵活性。
如果不想使用MVC开发模式也是可以的,MVC只是一一个非常合理的规范。MVC的关系如下图所示。
如果读者对MVC开发徽式理解得不深入,那么往往会以为用户通过浏览器访问MVC模型的页面就是访问视图(View)。实际上,它不是直接访问视图,而是访问 DispatcherServlet 处理映射和调用视图演染,然后返回给用户的数据。
在整个Sping MC相架中,DispatcherServlet 处于核心位置,继承自HttpServlet。它负责协调和组织不同组件,以完成请求处理并返回响应工作。
整个工程流程如下:
(1) 客户端(用户)发出的请求由Toncat (服务器)接收,然后Tomcat 将请求转交给DispatcherServlet处理。
(2) DispatcherServlet 匹配控制器中配置的映射路径,进行下一步处理。
(3) ViewResolver 将 ModelAndView 或 Exception 解析成 View。然后 View 会调用 render() 方法,井根据 ModelAndView 中的数据染出页面。
在 MVC 开发模式中,容易混淆的还有 Model,它往会被认为是业务逻辑层或 DAO 层。这种理解并不能说是错误的,但并不是严格意义上的 MVC 模式。
2. MVC 和 三层架构的关系
三层架构,就是将整个应用程序划分为表现层(UI)、业务逻辑层(Senice )、数据访问层 ( DAO / Repository )。
● 表现层:用于展示界面。主要对用户的清求进行接收,以及进行数据的返回。它为客户端(用户)提供应用程序的访问接口(界面)。
● 业务逻辑层: 是三层架构的服务层,负责业务逻辑处理,主要是调用DAO层对数据进行增加、删除、修改和查询等操作。
● 数据访问层:与数据库进行交互的持久层,被 Service 调用。在Spring Data JPA 中由Hibernate来实现。
注意一下:
Repository 和DAO层一样,都可以进行数据的增加、删除、修改和查询。它们相当于仓库管理员,执行进/出货操作。
DAO 层的工作是存取对象。Repository 层的工作是存取和管理对象。
简单理解就是: Repository-管理对象(对象缓存和在Repository的状态) + DAO
严格地说,MVC 是三层架构中的 UI 层。通过 MVC 把三层架构中的 UI 层又进行了分层。
由此可见,三层架构是基于业务逻辑或功能来划分的,而MVC是基于页面或功能来划分的。
参考:《Spring Boot 实战派》 龙中华