Java中 Controller、Service 、Dao/Mapper层的区别

本文详细介绍了软件开发中的三层架构,包括Service层(业务层)、Controller层(控制层)和Dao/Mapper层(持久层)。Service层封装了业务逻辑,提供独立且可复用的功能;Controller层负责调用Service层的方法来控制业务流程;Dao/Mapper层则处理数据持久化操作,与数据库进行交互。

1、Service层:业务层–>控制业务

业务模块的逻辑功能设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。

好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。

2、Controller层:控制层–>调用业务层方法来控制业务逻辑

controller层主要调用Service层里面的接口来控制具体的业务流程,控制层的配置也要在配置文件中进行。

Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计

3、Dao/Mapper层:持久层,主要与数据库交互

Dao层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类;然后就可以在模块中调用Dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一个类,Dao层的数据源和数据库连接的参数都是在配置文件中进行配置的。

Java 开发中,尤其是在基于 MVC(Model-View-Controller)架构的项目里,controllerservice、servlet、mapper 各自承担着不同的职责: - **Controller(控制器)**:作为客户端请求的接收者,负责接收用户的请求,对请求进行解析,调用合适的服务方法处理业务逻辑,最后将处理结果返回给客户端。它起到了连接客户端和服务的桥梁作用。比如在引用[2]里的 `AdminController`,接收 `/admins/login` 请求,调用 `adminService` 的 `login` 方法处理登录业务,再把生成的 JWT 返回给客户端。 ```java @RestController @RequestMapping(value = "/admins", produces = "application/json; charset=utf-8") public class AdminController { @Autowired private IAdminService adminService; @RequestMapping("/login") public String login(AdminLoginDTO adminLoginDTO) { String jwt = adminService.login(adminLoginDTO); return jwt; } } ``` - **Service(服务)**:处理核心的业务逻辑,协调多个数据访问(如 Mapper)的操作,保证业务的一致性和完整性。虽然有时它看起来只是简单调用 Dao 方法,但实际上它能进行复杂的业务规则判断、事务管理等操作。例如,在处理用户注册业务时,可能需要验证用户输入的信息是否合法、检查用户名是否已存在等,这些操作都可以在 Service 完成。就像引用[1]中提到的,Service 接收 Servlet 传来的请求,再调用 Dao 方法 [^1]。 - **Servlet**:是 Java Web 应用中处理客户端请求的基础组件,它运行在服务器端,能够接收客户端的 HTTP 请求,进行相应的处理后返回响应给客户端。在早期的 Java Web 开发中,Servlet 承担了大量的请求处理和业务逻辑处理工作。不过随着 MVC 架构的发展,现在更多地是由 Controller 来处理请求,Servlet 更多地作为底的基础组件存在,负责一些初始化、过滤等操作。 - **Mapper(数据访问)**:主要负责数据库进行交互,执行数据库的增删改查操作。在 MyBatis 等持久化框架中,Mapper 通常以接口的形式存在,通过 XML 文件或注解来定义 SQL 语句。它将 Java 对象和数据库表进行映射,使得开发者可以通过调用 Mapper 接口的方法来操作数据库,而无需编写复杂的 JDBC 代码。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值