基于领域驱动设计(DDD)并支持SaaS平台的单体应用开发脚手架.
- 解决编写过程式和事务代码,造成后期维护逻辑混乱、维护成本高的痛点;
- 边界规范易维持,核心业务逻辑内聚在领域内,低耦合,高内聚,易于长期维护;
- 网上基本讲的都是DDD的理论很少有讲怎么落地,xtoon-boot提供了完整落地方案和企业级手脚架;
- 可以快速开发,框架提供了系统管理和组织架构等核心模块;
- 支持多租户的SaaS平台;
如果有什么问题或建议可以 提ISSUE 或 加群(QQ:130950009),交流技术,分享经验。
如果你解决了某些bug,或者新增了一些功能,欢迎 贡献代码,感激不尽~
大家多点 ⭐Star 支持下。
- Springboot
- Apache Shiro
- Mybatis-plus
- Swagger
- Hibernate-validator
- Alibaba Druid
- Element-ui
- 登录注册:账号、手机号验证登录,租户注册;
- 用户管理:用户新增,分配角色,禁用等;
- 角色管理:角色新增,查看,维护菜单等;
- 菜单管理:树形菜单管理,可配置菜单和按钮权限等;
- 租户管理:租户列表,禁用等;
- 日志管理:记录操作日志记录和查询;
xtoon-boot
├─db 数据库SQL脚本
│
├─xtoon-common 公共模块
│ │
│ └─java
│ ├─domain 领域通用类
│ └─util 工具类
│
├─xtoon-api 接口模块
│ │
│ ├─web
│ │ ├─common 接口通用类
│ │ ├─util 接口工具类
│ │ └─controller controller类
│ └─resources
│ ├─static.swagger swagger文件
│ ├─application.yml 全局配置文件
│ └─logback-spring.xml 日志配置文件
│
├─xtoon-sys 系统管理子域
│ │
│ └─java
│ ├─application 应用层
│ │ ├─assembler DTO转换类
│ │ ├─command 命令入参
│ │ ├─dto DTO
│ │ └─impl 应用接口实现
│ ├─domain 领域层(核心)
│ │ ├─model 领域模型
│ │ ├─service 领域服务
│ │ ├─specification 规格校验
│ │ └─external 外部接口(防腐层)
│ └─infrastructure 基础设施层
│ ├─persistence 持久化类
│ └─external 外部服务类
│
├─xtoon-org 组织管理子域
│
- 用户界面层(或表示层)
负责向用户显示信息和解释用户指令。这里指的用户可以是另一个计算机系统, 不一定是使用用户界面的人 - 应用层
定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负 责的工作对业务来说意义重大,也是与其他系统的应用层进行交互的必要渠道 应用层要尽量简单,不包含业务规则或者知识,而只为下一层中的领域对象协调 任务,分配工作,使它们互相协作。它没有反映业务情况的状态,但是却可以具有 另外一种状态,为用户或程序显示某个任务的进度 - 领域层(或模型层)
负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节 是由基础设施层实现的,但是反映业务情况的状态是由本层控制并且使用的。领域 层是业务软件的核心 - 基础设施层
为上面各层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制, 为用户界面层绘制屏幕组件,等等。基础设施层还能够通过架构框架来支持4个层次 间的交互模式
工作中一直有个困恼:为什么身边很多项目后期维护时业务逻辑变的混乱不堪,service层代码变的庞大难以变更,维护成本居高不下,有没有好的解决方式的?
Eric Evans的DDD(Domain-Driven Design 领域驱动设计)正是为了解决复杂业务而提出。
我们1.1版本终于上线了,框架开源出来是想跟大家探讨并一起维护,希望今后有更多的项目和产品能使用基于框架开发。
- CSDN博客-DDD系列持续更新中,欢迎关注!
本软件基于 Apache-2.0 协议进行分发和使用,更多信息参见 协议文件。