一、使用三层架构的原因
如果所有代码都写在controller类的方法中,这里面包含了数据访问的代码、逻辑处理的代码、接收请求和响应数据的代码,如图示例:
而我们在进行软件设计以及软件开发的时候,要尽量让每一个接口、类或者方法的职责更加单一,即一个类或者一个方法就只做一件事情,只管一块功能。这就是所谓的"单一职责原则"。
这样能够使我们的接口、类以及方法的复杂度更低,可读性更高,扩展性更好,更利于后期的维护。
所以在web开发中,就有了三层架构。
二、三层架构
- controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
- service:业务逻辑层,处理具体的业务逻辑。
- dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增删改查。
三、示例分析
三层架构目录示例:
- domain相当于POJO,定义了一些实体类
- mapper层相当于DAO层,只不过它是使用了mybatis对数据库进行访问,所以命名为mapper
- service:业务逻辑层,定义了业务逻辑处理相关接口,里面的impl是各个接口的实现类
注意:如果想通过mybatis或mybatisPlus来进行数据的访问,dao可以改成mapper,即mapper层,里面定义数据访问的相关接口(mapper层中可以定义多个mapper接口),而XXmapper.xml文件就相当于特定接口中各个抽象方法的具体实现。mapper.xml文件放在resources目录中,如图