为什么代码要 controller,service, 分层的意义是什么, 每层做什么?

这个问题每个阶段的理解不一样, 将来有新的体会再修改吧.

每层做什么?

controller层

控制层. 负责接收参数, 组合参数. 这是程序入口第一层.

收到的只有接口请求类, 在controller层做3项工作,

  1. 对请求消息进行校验.
  2. 对请求类进行拆解, 组合得到我们系统需要的对象. 再传入service层.
  3. 对响应类对象进行组合. 准备返参给调用方

service层

服务层. 核心业务层.

收到的参数是我们系统应有的参数. 所以可以直接运算.
比如根据传入的门诊号, 马上可以调用dao的方法, 得到挂号明细对象.
根据药品编码, 马上得到药品信息.

dao层

数据访问层(Data Access Object).

收到的参数是字符串, int. 或者是面向数据库的javabean对象. 都是一些简单基础的对象.
通过组合sql来得数据库执行结果.

entity层/bean层

entity:实体. 又叫bean层. model层. 也称为pojo层.简单基础对象.
是数据库在项目中的类.该文件包含实体类的属性和对应属性的set,get方法.

为什么要分层? 分层的意义是什么?

什么花里胡哨的. 直接在controller层调用dao得到数据库结果对象不行?

完全可以!

但是不推荐. 原因如下:

  1. 就跟相同的一段逻辑需要封装成方法一样, 会提高代码可读性. 一大堆代码堆在controller应该不是那么美观.

  2. 方便拓展. spring的优秀之处在于可以通过aop, 只写一个方法, 通过拦截器, 让每层的方法都瞬间增加一个新功能.

方便拓展在于: https://www.junjun.fun/22_11_09_how_to_deal_with_the_spring_exception/