┌─────────────────────────────────────────────────────────────────────┐
│ 客户端层 (Client) │
├─────────────────────────────────────────────────────────────────────┤
│ 浏览器 (Chrome/Firefox) │ 移动端 APP │ 桌面应用 │ 第三方系统 │
└────────────────────────┬────────────────────────────────────────────┘
│ HTTP/HTTPS 请求
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 网络层 (Network Layer) │
├─────────────────────────────────────────────────────────────────────┤
│ DNS 解析 → CDN (可选) → 防火墙 → 负载均衡器 (LVS/F5) │
└────────────────────────┬────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────────────┐
│ Web 服务器层 (Nginx) │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Nginx (端口 80/443) │ │
│ ├──────────────────────────────────────────────────────┤ │
│ │ 1. SSL/TLS 终止 (HTTPS → HTTP) │ │
│ │ 2. 静态资源处理 (HTML/CSS/JS/图片) │ │
│ │ 3. 请求路由分发 │ │
│ │ 4. 负载均衡 (多个后端服务器) │ │
│ │ 5. 限流、防护 (rate limit) │ │
│ │ 6. 缓存 (proxy_cache) │ │
│ │ 7. Gzip 压缩 │ │
│ │ 8. 请求日志记录 │ │
│ └──────────────────────────────────────────────────────┘ │
└────────────────────────┬────────────────────────────────────────────┘
│ 动态请求转发
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 应用服务器层 (Application Server) │
├─────────────────────────────────────────────────────────────────────┤
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ Tomcat / Jetty / Undertow (端口 8080/8081/...) │ │
│ ├────────────────────────────────────────────────────────────┤ │
│ │ Servlet 容器 │ │
│ │ ├─ 连接器 (Connector) - 接收 HTTP 请求 │ │
│ │ ├─ 容器 (Container) - 管理 Servlet 生命周期 │ │
│ │ └─ 线程池 - 处理并发请求 │ │
│ └────────────────────────────────────────────────────────────┘ │
└────────────────────────┬────────────────────────────────────────────┘
│ 请求进入 Spring Boot 应用
↓
┌─────────────────────────────────────────────────────────────────────┐
│ Spring Boot 应用层 (Application) │
├─────────────────────────────────────────────────────────────────────┤
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 1. Filter 过滤器链 (Servlet Filter) │ │
│ │ ├─ CharacterEncodingFilter (字符编码) │ │
│ │ ├─ CorsFilter (跨域处理) │ │
│ │ ├─ 自定义 Filter (日志、认证等) │ │
│ │ └─ ... │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 2. DispatcherServlet (前端控制器) │ │
│ │ - Spring MVC 的核心,分发请求 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 3. Interceptor 拦截器链 (Spring Interceptor) │ │
│ │ ├─ preHandle() - 请求前处理 │ │
│ │ │ ├─ 登录验证拦截器 │ │
│ │ │ ├─ 权限校验拦截器 │ │
│ │ │ ├─ 日志拦截器 │ │
│ │ │ └─ 性能监控拦截器 │ │
│ │ ├─ postHandle() - 请求后处理 │ │
│ │ └─ afterCompletion() - 完成后处理 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 4. HandlerMapping (处理器映射) │ │
│ │ - 根据 URL 找到对应的 Controller 方法 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 5. HandlerAdapter (处理器适配器) │ │
│ │ - 调用 Controller 方法 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 6. Controller 层 (控制器) │ │
│ │ @RestController / @Controller │ │
│ │ ├─ 接收请求参数 (@RequestParam, @PathVariable) │ │
│ │ ├─ 参数校验 (@Valid, @Validated) │ │
│ │ └─ 调用 Service 层 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 7. AOP 切面 (Aspect Oriented Programming) │ │
│ │ ├─ @Before - 前置通知 │ │
│ │ ├─ @After - 后置通知 │ │
│ │ ├─ @Around - 环绕通知 │ │
│ │ ├─ @AfterReturning - 返回后通知 │ │
│ │ └─ @AfterThrowing - 异常通知 │ │
│ │ 应用场景: │ │
│ │ ├─ 事务管理 (@Transactional) │ │
│ │ ├─ 日志记录 │ │
│ │ ├─ 性能监控 │ │
│ │ ├─ 权限控制 │ │
│ │ └─ 缓存处理 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 8. Service 层 (业务逻辑层) │ │
│ │ @Service │ │
│ │ ├─ 业务逻辑处理 │ │
│ │ ├─ 事务管理 │ │
│ │ └─ 调用 DAO/Mapper 层 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ 9. DAO/Mapper 层 (数据访问层) │ │
│ │ @Repository / @Mapper │ │
│ │ ├─ MyBatis Mapper 接口 │ │
│ │ ├─ JPA Repository │ │
│ │ └─ JDBC Template │ │
│ └────────────────────────────────────────────────────────────┘ │
└────────────────────────┬────────────────────────────────────────────┘
│ SQL 查询
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 中间件层 (Middleware Layer) │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 数据库连接池 │ │ 缓存中间件 │ │ 消息队列 │ │
│ │ (Druid/ │ │ (Redis/ │ │ (RabbitMQ/ │ │
│ │ HikariCP) │ │ Memcached) │ │ Kafka) │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ↓ ↓ ↓ │
└─────────────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 数据层 (Data Layer) │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ MySQL │ │ Redis │ │ MongoDB │ │
│ │ (主从复制) │ │ (缓存) │ │ (文档存储) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Elasticsearch│ │ MinIO/OSS │ │ ClickHouse │ │
│ │ (搜索引擎) │ │ (对象存储) │ │ (数据分析) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
com.company.project
│
├── controller (表现层/控制器层)
│ ├── UserController.java
│ ├── ProductController.java
│ └── OrderController.java
│
├── service (业务逻辑层)
│ ├── UserService.java (接口)
│ ├── ProductService.java
│ └── impl (实现类)
│ ├── UserServiceImpl.java
│ └── ProductServiceImpl.java
│
├── dao / mapper (数据访问层)
│ ├── UserDao.java / UserMapper.java
│ ├── ProductDao.java
│ └── OrderDao.java
│
├── entity / domain / model (实体层)
│ ├── po (Persistent Object - 持久化对象)
│ │ ├── User.java
│ │ └── Product.java
│ │
│ ├── dto (Data Transfer Object - 数据传输对象)
│ │ ├── UserDTO.java
│ │ └── ProductDTO.java
│ │
│ └── vo (View Object - 视图对象)
│ ├── UserVO.java
│ └── ProductVO.java
│
├── config (配置层)
│ ├── DataSourceConfig.java
│ ├── RedisConfig.java
│ └── SecurityConfig.java
│
├── common (公共层)
│ ├── constant (常量)
│ │ └── CommonConstant.java
│ │
│ ├── enums (枚举)
│ │ └── StatusEnum.java
│ │
│ ├── exception (自定义异常)
│ │ ├── BusinessException.java
│ │ └── GlobalExceptionHandler.java
│ │
│ └── result (统一返回结果)
│ └── Result.java
│
├── util (工具类层)
│ ├── DateUtil.java
│ ├── StringUtil.java
│ └── JsonUtil.java
│
├── aspect (切面层 - AOP)
│ ├── LogAspect.java
│ └── PermissionAspect.java
│
├── filter (过滤器层)
│ └── AuthFilter.java
│
├── interceptor (拦截器层)
│ └── LoginInterceptor.java
│
└── listener (监听器层)
└── ApplicationListener.java