Web 程序的经典三层架构(Controller 控制层、Service 业务层、DAO 持久层)三层架构是Web应用开发中常用的代码组织方式,分为控制层、业务层和持久层。控制层接收请求并返回响应,业

目录

1. 什么是三层架构?

2. 三层的职责

(1) Controller 控制层

(2) Service 业务层

(3) DAO 持久层

3. 三层架构调用流程

4. 三层架构的优点

5. 三层架构的不足

6. 小结


1. 什么是三层架构?

Web 应用常用 三层架构(Three-Tier Architecture) 来组织代码,核心思想是 分层解耦

  • Controller 控制层
    接收用户请求(如 HTTP 请求),调用业务逻辑,返回响应。

  • Service 业务层
    处理业务逻辑(计算、规则判断、事务控制等)。

  • DAO 持久层(Data Access Object)
    负责数据库的操作,封装 增删改查,只和数据库打交道。

三层架构 = 请求进入 → Controller → Service → DAO → 数据库 → 返回


2. 三层的职责

(1) Controller 控制层

  • 主要职责:接收请求、调用 Service、返回结果。

  • 不应该写复杂逻辑,只做 调度

  • 框架:Spring MVC 的 @RestController

示例:

@RestController
@RequestMapping("/user")
public class UserController {
    
    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findUserById(id);
    }

    @PostMapping
    public String addUser(@RequestBody User user) {
        userService.saveUser(user);
        return "新增成功";
    }
}

(2) Service 业务层

  • 主要职责:

    • 实现业务逻辑(例如注册用户要校验用户名、加密密码等)。

    • 控制事务。

    • 组合多个 DAO 的方法完成复杂业务。

  • 框架:Spring 的 @Service

示例:

@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public User findUserById(Long id) {
        return userDao.findById(id);
    }

    public void saveUser(User user) {
        // 业务逻辑:例如加密密码
        user.setPassword(MD5Util.encrypt(user.getPassword()));
        userDao.insert(user);
    }
}

(3) DAO 持久层

  • 主要职责:操作数据库,封装 SQL。

  • 不包含业务逻辑,只做数据访问。

  • 框架:MyBatis、Hibernate、JPA 等。

示例(MyBatis):

@Mapper
public interface UserDao {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);

    @Insert("INSERT INTO user(username, password) VALUES(#{username}, #{password})")
    void insert(User user);
}

3. 三层架构调用流程

用户 → ControllerServiceDAO → 数据库

比如一个 查询用户 的过程:

  1. 浏览器请求 /user/1

  2. Controller 收到请求,调用 UserService.findUserById(1)

  3. Service 里可能校验参数、做缓存处理,然后调用 UserDao.findById(1)

  4. DAO 执行 SQL,返回 User 对象

  5. Service 可能加工数据,再返回 Controller

  6. Controller 返回 JSON 响应给前端


4. 三层架构的优点

分层解耦:每层职责清晰,修改互不影响。
易于维护:业务逻辑和数据库访问分开,代码清晰。
可扩展性强:方便做分布式、微服务。
利于测试:单元测试时可以 Mock DAO 层,测试 Service。


5. 三层架构的不足

代码稍显复杂:小项目可能显得繁琐。
层次过多:一些简单 CRUD 业务需要写很多文件。
性能开销:调用链长于简单架构。


6. 小结

  • Controller:只管请求和响应。

  • Service:专注业务逻辑和事务。

  • DAO:专门做数据操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空下的DeppBing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值