超详细讲解SpringMVC三层架构

SpringMVC 三层架构

java SpringMVC 的工程结构一般来说分为三层，自下而上是 Modle 层（模型，数据访问层）、Cotroller 层（控制，逻辑控制层）、View 层（视图，页面显示层），其中 Modle 层分为两层：dao 层、service 层，MVC 架构分层的主要作用是解耦。采用分层架构的好处，普遍接受的是系统分层有利于系统的维护，系统的扩展。就是增强系统的可维护性和可扩展性。

对于 Spring 这样的框架，（View\Web）表示层调用控制层（Controller），控制层调用业务层（Service），业务层调用数据访问层（Dao）。

service 层：业务层，用来实现业务逻辑。能调用 dao 层或者 service 层，返回数据对象 DO 或者业务对象 BO，BO 通常由 DO 转化、整合而来，可以包含多个 DO 的属性，也可以是只包含一个 DO 的部分属性。通常为了简便，如果无需转化，service 也可以直接返回 DO。外部调用（HTTP、RPC）方法也在这一层，对于外部调用来说，service 一般会将外部调用返回的 DTO 转化为 BO。是专注业务逻辑，对于其中需要的数据库操作，都通过 Dao 去实现。主要去负责一些业务处理，比如取得连接、关闭数据库连接、事务回滚，一些复杂的逻辑业务处理就放到 service 层。

DAO 层：负责访问数据库进行数据的操作，取得结果集，之后将结果集中的数据取出封装到 VO 类对象之后返回给 service 层。数据层，直接进行数据库的读写操作，返回数据对象 DO，DO 与数据库表一一对应。Dao 的作用是封装对数据库的访问：增删改查，不涉及业务逻辑，只是达到按某个条件获得指定数据的要求。

Cotroller 层：叫做控制层，主要的功能是处理用户发送的请求。主要处理外部请求。调用 service 层，将 service 层返回的 BO/DO 转化为 DTO/VO 并封装成统一返回对象返回给调用方。如果返回数据用于前端模版渲染则返回 VO，否则一般返回 DTO。不论是 DTO 还是 VO，一般都会对 BO/DO 中的数据进行一些转化和整合。

View 层：叫做显示层，主要是负责现实数据。

在实际开发中 dao 层要先定义出自己的操作标准即标准接口，就是为了解耦合。