// the find
hs-web/hsweb-framework
hsweb (haʊs wɛb) 是一个基于spring-boot 2.x开发 ,首个使用全响应式编程的企业级后台管理系统基础项目。
hsweb is a Chinese-language admin backend framework built on Spring Boot 2.x and WebFlux, with R2DBC for persistence and the author's own easy-orm for query building. It bundles RBAC, data-scope access control and a system module with users, roles and dictionaries, aimed at teams building internal admin tools who already work with Project Reactor.
- The reactive path runs end to end: WebFlux controllers, R2DBC persistence, reactive transactions and a reactive authentication path. Many Spring projects stop at the controller and call blocking JDBC underneath, so this is harder to get right than the README makes it sound.
- Authorization is split into separate concerns (RBAC, data-scope rules, dimensions) under authorization-api, and annotations such as @SaveAction and @DataAccess keep permission checks out of service code. You can adopt one part without the rest.
- The module layout is real and separable. The system module gives you users, roles, permissions and dictionaries out of the box, so you are not writing the usual admin scaffolding first.
- Spring Boot 2.x is past open-source support, and the README lists Java 8 as the baseline. The repo also has 5.x CI workflows and design docs under docs/plans, but the README still describes the 4.x line. Check which line you are actually adopting before committing to it.
- The README's own feature list leaves non-reactive support (MVC/JDBC), two-factor authentication and instant file upload unchecked. If your team has blocking code to integrate, expect that to be the hard part.
- Query building depends on the author's easy-orm rather than Spring Data R2DBC or jOOQ. The community to hire from and to find answers in is much smaller, and you have to learn its query semantics on top of Reactor.
- Most documentation is in Chinese, and the real usage docs are the per-module READMEs. The project itself recommends depending on individual Maven modules rather than cloning it, so evaluating the whole framework takes more effort than a single sample app would.