Skip to content

hsweb (haʊs wɛb) 是一个基于spring-boot 2.x开发 ,首个使用全响应式编程的企业级后台管理系统基础项目。

License

Notifications You must be signed in to change notification settings

hs-web/hsweb-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1f62a9b · Mar 31, 2025
Jan 18, 2019
Jun 6, 2024
Mar 31, 2025
Mar 31, 2025
Mar 31, 2025
Mar 31, 2025
Mar 31, 2025
Mar 31, 2025
Mar 31, 2025
Mar 31, 2025
Jan 30, 2019
Feb 25, 2020
Sep 14, 2017
Jan 25, 2019
Jun 2, 2018
Mar 4, 2020
Jan 8, 2024
Jan 30, 2019
Feb 25, 2020
Jan 30, 2019
Mar 31, 2025

Repository files navigation

hsweb4 基于spring-boot2,全响应式的后台管理框架

Codecov Build Status License

功能,特性

  • 基于r2dbc ,easy-orm 的通用响应式CRUD
    • H2,Mysql,SqlServer,PostgreSQL
  • 响应式r2dbc事务控制
  • 响应式权限控制,以及权限信息获取
    • RBAC权限控制
    • 数据权限控制
    • 双因子验证
  • 多维度权限管理功能
  • 响应式缓存
  • 非响应式支持(mvc,jdbc)
  • 内置业务功能
    • 权限管理
      • 用户管理
      • 权限设置
      • 权限分配
    • 文件上传
      • 静态文件上传
      • 文件秒传
    • 数据字典

示例

https://github.com/zhou-hao/hsweb4-examples

应用场景

  1. 完全开源的后台管理系统.
  2. 模块化的后台管理系统.
  3. 功能可拓展的后台管理系统.
  4. 集成各种常用功能的后台管理系统.
  5. 前后分离的后台管理系统.

注意: 项目主要基于spring-boot,spring-webflux. 在使用hsweb之前,你应该对 project-reactor , spring-boot 有一定的了解.

项目模块太多?不要被吓到.我们不推荐将本项目直接clone后修改,运行.而是使用maven依赖的方式使用hsweb. 选择自己需要的模块进行依赖,正式版发布后,所有模块都将发布到maven中央仓库.

文档

各个模块的使用方式查看对应模块下的 README.md,在使用之前, 你可以先粗略浏览一下各个模块,对每个模块的作用有大致的了解.

核心技术选型

  1. Java 8
  2. Maven3
  3. Spring Boot 2.x
  4. Project Reactor 响应式编程框架
  5. hsweb easy orm 对r2dbc的orm封装

模块简介

模块 说明
hsweb-authorization 权限控制
hsweb-commons 基础通用功能
hsweb-concurrent 并发包,缓存,等
hsweb-core 框架核心,基础工具类
hsweb-datasource 数据源
hsweb-logging 日志
hsweb-starter 模块启动器
hsweb-system 系统常用功能

核心特性

  1. 响应式,首个基于spring-webflux,r2dbc,从头到位的响应式.
  2. DSL风格,可拓展的通用curd,支持前端直接传参数,无需担心任何sql注入.
  //where name = #{name}
  createQuery()
          .where("name",name)
          .fetch();

          //update s_user set name = #{user.name} where id = #{user.id}
          createUpdate()
          .set(user::getName)
          .where(user::getId)
          .execute();
  1. 类JPA增删改
@Table(name = "s_entity")
public class MyEntity {
    
    @Id
    private String id;
    
    @Column
    private String name;

    @Column
    private Long createTime;
}

直接注入即可实现增删改查

@Autowire
private ReactiveRepository<MyEntity, String> repository;
  1. 灵活的权限控制
@PostMapping("/account")
@SaveAction
public Mono<String> addAccount(@RequestBody Mono<Account> account){
     return accountService.doSave(account);
}

License

Apache 2.0

Stargazers over time