目录
什么是三层架构?
本案例结构
代码实现
实体类 User(User.java)
Dao 层接口(UserDao.java)
Service 层接口与实现
Dao 实现类(UserDaoImpl.java)
Controller 层(UserController.java)
启动类(ThreeTierDemoApplication.java)
数据文件(user.txt)
依赖(pom.xml 中加入 Hutool)
程序运行效果
总结
在企业级 JavaWeb 项目开发中,为了降低代码耦合、便于维护与扩展,通常采用 三层架构(Three-Tier Architecture)。本文通过一个简单案例,带你快速了解并实践三层架构。
三层架构一般分为:
表现层(Controller / View):负责接收用户请求,返回响应。
业务逻辑层(Service):负责处理具体业务逻辑。
数据访问层(Dao / Repository):负责与数据库交互。
层与层之间各司其职,低耦合高内聚,结构清晰。
项目结构:
three-tier-demo/
├── controller/
│ └── UserController.java
├── service/
│ ├── UserService.java
│ └── UserServiceImpl.java
├── dao/
│ └── UserDao.java
├── pojo/
│ └── User.java
├── ThreeTierDemoApplication.java
└── user.txt
语言:Java,框架:Spring Boot
路径:pojo/User.java
package pojo;
public class User {
private Integer id;
private String name;
public User(Integer id, String name) {
this.id = id;
this.name = name;
}
// getter 和 setter 省略,可用 Lombok
}
路径:dao/UserDao.java
package dao;
import pojo.User;
import java.util.List;
public interface UserDao {
List findAll();
}
UserService.java
路径:service/UserService.java
package service;
import pojo.User;
import java.util.List;
public interface UserService {
List getAllUsers();
}
UserServiceImpl.java
路径:service/UserServiceImpl.java
package service;
import dao.UserDao;
import dao.UserDaoImpl;
import pojo.User;
import java.util.List;
public class UserServiceImpl implements UserService {
private UserDao userDao = new UserDaoImpl();
@Override
public List getAllUsers() {
return userDao.findAll();
}
}
路径:dao/UserDaoImpl.java
package dao;
import pojo.User;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import cn.hutool.core.io.IoUtil;
public class UserDaoImpl implements UserDao {
@Override
public List findAll() {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
List lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());
List list = new ArrayList<>();
for (String line : lines) {
String[] parts = line.split(",");
list.add(new User(Integer.parseInt(parts[0]), parts[1]));
}
return list;
}
}
路径:controller/UserController.java
package controller;
import pojo.User;
import service.UserService;
import service.UserServiceImpl;
import java.util.List;
public class UserController {
private UserService userService = new UserServiceImpl();
public void showUserList() {
List userList = userService.getAllUsers();
for (User user : userList) {
System.out.println(user.getId() + ":" + user.getName());
}
}
}
路径:ThreeTierDemoApplication.java
import controller.UserController;
public class ThreeTierDemoApplication {
public static void main(String[] args) {
new UserController().showUserList();
}
}
路径:项目根目录或 resources/
1,张三
2,李四
3,王五
cn.hutool
hutool-all
5.8.25
运行 ThreeTierDemoApplication.java
,控制台输出:
1:张三
2:李四
3:王五
这个案例完整演示了:
三层架构结构
Dao → Service → Controller 的调用关系
Hutool 工具类简化 IO 读取
项目代码解耦,清晰易维护
非常适合 JavaWeb 初学者上手,理解业务逻辑分层思想。