springboot领域驱动开发

Overview

License Maven Central Build Status codecov

springboot-framework | Springboot领域驱动开发

当你无意间推开这一扇门,将会感叹原来生活可以如此的美好。

本框架基于springboot为提供领域驱动设计与事件风暴开发落地,提供的范式开源框架。

maven install

    <dependency>
        <groupId>com.codingapi.springboot</groupId>
        <artifactId>springboot-framework</artifactId>
        <version>${last.version}</version>
    </dependency>

CONTRIBUTING

Welcome to springboot-framework ! This document is a guideline about how to contribute to springboot-framework. If you find something incorrect or missing, please leave comments / suggestions.

CONTRIBUTING

example

见springboot-example 完善中...

youtube

欢迎订阅我的youtube账号 codingapi,带你从0到1落地springboot与领域驱动设计

领域驱动设计001--了解为什么采用领域驱动设计开发
领域驱动设计002--SpringBoot DDD Example HelloWorld
领域驱动设计003--事件风暴

books

实战书籍正在编写中...

推荐DDD的三个理由

  • 业务逻辑可视化
  • 灵活的业务拓展性
  • 轻量化的业务单元测试

领域驱动设计开发流程

  • 事件风暴
  • 划分子域
  • 设计模型
  • 单元测试
  • 集成业务

推荐的框架与软件

SpringJPA

JPA是ORM框架,可以非常简单的与领域对象相关联。 https://spring.io/projects/spring-data-jpa

StartUML

StartUML是UML设计软件。https://staruml.io/

Mural

Mural 是用于画事件风暴图的软件。https://www.mural.co/

Comments
  • 数据权限的个人建议

    数据权限的个人建议

    数据权限,个人觉得还是政府类的比较严格,也比较通用。 数据权限无非以下几种情况,如果能支持,这个权限还是比较好用的。

    1. 自己创建的数据
    2. 指定部门层级(组织机构) 2.1 向下兼容,审批数据(如:自己权限范围下的部门数据) 2.2向上兼容,通知公告(如:每个人都能看到自己部门的数据,或上一级,上上级发给下级阅读的数据)
    3. 指定夸多部门数据,如:领导实际在某个部门下,但是还代管了某个部 3.1 向下兼容,审批数据(如:自己权限范围下的部门数据) 3.2 向上兼容,通知公告(如:每个人都能看到自己部门的数据,或上一级,上上级发给下级阅读的数据)
    opened by xiaomage2 1
  • 🌟🌟🌟 数据权限设计功能设计 🌟🌟🌟

    🌟🌟🌟 数据权限设计功能设计 🌟🌟🌟

    数据权限作为管理系统中常用的功能,却没有非常适合的框架。通常在系统的研发过程中,都由研发人员自行控制。无抽象的数据权限设计模式。

    springboot-data-permission将解决该问题

    产品远景:

    • 数据权限不仅限于sql数据,需要支持各种数据的权限分离
    • 数据权限非功能权限,设计上与功能权限分离。
    • 框架可以任何数据均可作为数据资源划分条件,即数据资源可配置。
    • 数据资源与数据权限之间可通过数据权限组来配置数据权限,数据权限组为自定义的数据组。如包括:自己、本级别即以下、全部、自定义。
    • 所有需要配置的数据权限均会自动创建数据权限关联关系(one-money)
    • 数据权限的设置可从两个维度设置:1以用户角度配置数据的可见权限。2以资源角度配置数据的可见用户。
    help wanted 
    opened by 1991wangliang 1
  • Dev

    Dev

    Describe what this PR does / why we need it

    Does this pull request fix one issue?

    Describe how you did it

    Describe how to verify it

    Special notes for reviews

    opened by 1991wangliang 0
  • Update README.md

    Update README.md

    Describe what this PR does / why we need it

    Does this pull request fix one issue?

    Describe how you did it

    Describe how to verify it

    Special notes for reviews

    opened by 1991wangliang 0
  • add DataSourceInitializer #5

    add DataSourceInitializer #5

    Describe what this PR does / why we need it

    Does this pull request fix one issue?

    Describe how you did it

    Describe how to verify it

    Special notes for reviews

    opened by 1991wangliang 0
  • 面向领域驱动设计 ——  Domain Driver Design

    面向领域驱动设计 —— Domain Driver Design

    • 模型即为对象,类对象的功能、方法职责要单一。类包也要聚焦业务职能单一。
    • 对象与对象之间,依赖抽象,而不依赖对象实体
    • 业务线的梳理,即区分业务的主线与支线。简化业务复杂度,增加业务的拓展性。
    • 业务的拓展与业务线的衔接,通过事件与消息模式解耦
      • 事件与消息区别
        • 事件:事件通常发生在程序系统内部,发生在进程的内部。事件订阅者与发起者可以不在同一个事务内,各个订阅者相对独立。
        • 消息:消息队列通常是异步的,通常发生在不同的进程里。
    • 可视化与UML,可视化是为了便于理解,为了进一步的打磨

    业务分类:

    1. 业务状态由对象控制,对象的数据最终持久化到数据库中。

    2. 业务状态由第三方控制,对象无法影响业务状态。例如,业务需要调用第三方的状态。

      PS:业务状态需要由第三方控制时,则需要将对象抽象,将第三方状态作为基础实施层实现领域抽象,然后再完成具体的内容实现。

      PS:这也充分利用了依赖倒置的原则。

    good first issue 
    opened by 1991wangliang 1
Releases(v1.4.10)
Owner
CodingApi
CodingAPI is an open source organization.
CodingApi