f 数据仓库与分析-《系统架构 - Java 企业应用架构中的完整层级划分》 - Powered by qidao123.com技术社区

《系统架构 - Java 企业应用架构中的完整层级划分》

打印 上一主题 下一主题

主题 1749|帖子 1749|积分 5247

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Java 企业应用架构中的完整层级划分

除了常见的 Controller、Service、DAO 等尺度层级外,当代 Java 企业应用架构中还包罗更多专业化的层级。以下是完整的层级分类和说明:
核心层级(根本架构)


  • Entity/Domain Model(实体/领域模型层)

    • 与数据库表布局对应的纯数据对象
    • 包罗 JPA/Hibernate/MyBatis 等 ORM 框架注解

  • DTO (Data Transfer Object)(数据传输对象层)

    • 包罗:

      • Request DTO:接口入参对象
      • Response DTO:接口返回对象
      • Query DTO:复杂查询参数对象


  • VO (Value Object)(值对象层)

    • 用于前端展示的定制数据布局
    • 可能组合多个实体字段或计算字段

  • DAO/Repository(数据访问层)

    • 根本实现:JpaRepository/MyBatis Mapper
    • 扩展实现:自定义复杂查询接口

业务逻辑层


  • Service(服务层)

    • 细分为:

      • Interface:服务接口定义
      • Impl:服务详细实现
      • Domain Service:领域服务(DDD 模式)


  • Facade(门面层)

    • 聚合多个服务的复杂业务流程
    • 对外提供粗粒度服务

  • Manager(管理层)

    • 通用业务能力封装
    • 典型场景:

      • 事务管理
      • 缓存管理
      • 批量操作


接口层


  • Controller(控制层)

    • 变体情势:

      • RestController:RESTful API
      • Controller:传统 MVC
      • RPC Controller:Dubbo/gRPC 接口


  • Endpoint(端点层)

    • 特别协议接口:

      • WebSocket 端点
      • GraphQL 剖析器
      • RSocket 处置惩罚器


根本办法层


  • Config(配置层)

    • 包罗:

      • 应用配置(@Configuration)
      • 安全配置(SecurityConfig)
      • 组件配置(RedisConfig)


  • Interceptor(拦截器层)

    • 典型实现:

      • 日志日志拦截器
      • 权限拦截器
      • 限流拦截器


  • Filter(过滤器层)

    • Servlet 过滤器
    • 用于:

      • 请求预处置惩罚
      • 响应后处置惩罚
      • 跨域处置惩罚


  • Aspect(切面层)

    • AOP 切面实现:

      • 事务切面(@Transactional)
      • 日志日志切面
      • 性能监控监控


辅助层级


  • Utils/Toolkit(工具层)

    • 分类:

      • 通用工具(StringUtils)
      • 领域工具(OrderNoGenerator)
      • 验证工具(Validator)


  • Constant(常量层)

    • 包罗:

      • 错误码定义
      • 业务状态码
      • 系统常量


  • Enum(枚举层)

    • 业务枚举:

      • 状态枚举(OrderStatus)
      • 范例枚举(UserType)


  • Exception(异常层)

    • 包罗:

      • 业务异常(BusinessException)
      • 系统异常(SystemException)
      • 异常处置惩罚器(@ControllerAdvice)


特别架构层级


  • Listener/Subscriber(监听层)

    • 事件处置惩罚:

      • Spring 事件监听器
      • 消息队列斲丧者
      • 观察者模式实现


  • Job/Task(任务层)

    • 定时任务:

      • @Scheduled 注解任务
      • Quartz 任务

    • 异步任务:@Async

  • Client/SDK(客户端层)

    • 外部服务调用封装:

      • HTTP 客户端(Feign/Retrofit)
      • 第三方 SDK 封装


  • Adapter(适配层)

    • 用于:

      • 协议转换
      • 遗留系统适配
      • 第三方服务适配


  • Delegate(委托层)

    • 复杂操作的代理实现
    • 典型场景:

      • 多数据源路由
      • 降级处置惩罚


当代架构扩展层


  • BFF (Backend For Frontend)(聚合层)

    • 为特定前端定制接口
    • 聚合多个微服务数据

  • Gateway(网关层)

    • 功能:

      • 路由转发
      • 统一鉴权
      • 流量控制


  • Orchestrator(编排层)

    • 微服务场景下的流程编排
    • Saga 模式实现

各层调用关系示例

  1. [HTTP Request] → [Gateway] → [Controller] → [Service] → [Repository] → [DB]
  2.        ↑            ↓              ↓           ↓           ↓
  3.      [View] ← [BFF] ← [Mapper] ← [Manager] ← [Adapter] ← [Client]
  4.        ↑        ↓           ↓         ↓           ↓
  5.      [Cache] [Aspect]   [Event]   [Delegate]  [External System]
复制代码
分层原则建议


  • 单向依赖原则:下层永久不能依赖上层
  • 层间通信

    • 相邻层直接调用
    • 跨层调用需通过接口

  • 包布局示例
    1. com.example
    2. ├── config        # 配置层
    3. ├── constant      # 常量层
    4. ├── controller    # 控制层
    5. ├── service       # 服务层
    6. │   ├── impl      # 服务实现
    7. │   └── dto       # 数据传输对象
    8. ├── dao           # 数据访问层
    9. ├── entity        # 实体层
    10. ├── aspect        # 切面层
    11. ├── exception     # 异常层
    12. └── util          # 工具层
    复制代码
实际项目应根据业务复杂度选择符合的层级组合,过度分层会增长系统复杂性,分层不足则会导致代码耦合。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表